4.5用户信息

除了著名的init程序以外,所有的linux程序都是由其他程序或者用户启动的。

用户通常是在一个响应他们的命令的shell中启动程序。

程序能够通过检查环境变量和系统时钟来在很大程度上了解它所处的使用者的相关信息。

系统文件 /etc/passwd  包含一个用户账号数据库。它由行组成,每行对应一个用户,包括用户名,加密口令,UID、GID、全名、家目录和默认shell

系统文件/etc/shadow 现代的类UNIX系统使用这个文件来保存加密口令信息。

----------------------------------

1、uid_t getuid(void);返回程序关联的UID。它通常是启动程序的UID

2、char* getlogin(void);返回与当前用户关联登录名。

3、标准而又有效的获取用户信息的编程接口:

#include <sys/types.h>

#include <pwd.h>

struct passwd* getpwuid(uid_t);

struct passwd* getpwnam(const char* name);

使用:

struct passwd* pwd_uid= getpwuid( getuid() );

struct passwd* pwd_name = getpwnam( getlogin() );

4、如果要扫描密码文件中的所有信息,可以使用

getpwent,它的作用是依次取出文件数据项。

相关函数:

void endpwent(void);//终止处理过程

struct passwd* getpwent(void);//依次返回每个用户的信息数据项,当达到文件尾时,它返回一个空指针

void setpwent(void);//重置读指针到密码文件的开始位置。

程序示例:

struct passwd* pwd = NULL;

while((pwd = getpwent()) != NULL)

{

printf("user's name:%s\n", pwd->pw_name);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值