getpw() 原型如下:
[C++] 纯文本查看 复制代码 #include <sys/types.h>
#include <pwd.h>
int getpw(uid_t uid, char *buf);
该函数通过指定用户的 uid ,然后在 /etc/passwd 文件中查找对应的用户数据,并将这些数据返回到参数 buf 中。
/etc/passwd 文件中的域构成如下:name:passwd:uid:gid:gecos:dir:shell[/mw_shl_code]
name 表示用户名;
passwd 表示用户密码,使用 shadow 的系统不会将密码直接存放在此,取而代之的是 'x' 字符。
uid 表示用户 ID;
gid 表示用户组 ID;
gecos 表示用户信息;
dir 表示 home 目录;
shell 表示用户所用的 shell 。
上面这些信息都保存在 passwd 结构里,定义如下:
[C++] 纯文本查看 复制代码 struct passwd {
char *pw_name; /* username */
char *pw_passwd; /* user password */
uid_t pw_uid; /* user ID */
gid_t pw_gid; /* group ID */
char *pw_gecos; /* user information */
char *pw_dir; /* home directory */
char *pw_shell; /* shell program */
};
该结构定义在 pwd.h 文件中。
测试代码:
[C++] 纯文本查看 复制代码 #include <stdio.h>
#include <pwd.h>
#include <sys/types.h>
int main()
{
char buffer[128];
getpw(1000, buffer);
printf ("%s\n", buffer);
return 0;
}
运行输出:./getpw
beyes:x:1000:100:beyes:/home/beyes:/bin/bash
注意:该函数存在安全问题,不赞同使用,可以考虑使用 getpwent() 取代之。 |