我做了一些研究,我仍然在努力研究passwd结构.
http://www.opengroup.org/onlinepubs/000095399/basedefs/pwd.h.html
我需要获取用户ID,但我不认为我正在使用它.
int getpwuid_r(uid_t,struct passwd*,char*,size_t,struct passwd**);
此方法调用将返回一个指向结构的点,该结构将包含我需要的所有数据.我对参数相当困惑.
struct passwd.我需要先申报吗?struct passwd passwd?
我完全迷失了如何使用它.
最后,一旦我填满我的指针.我会用什么电话来获取数据?谢谢你的帮助.
在getpwuid_r签名中:
int getpwuid_r(uid_t uid, struct passwd *pwbuf, char *buf,
size_t buflen, struct passwd **pwbufp);
Run Code Online (Sandbox Code Playgroud)
uid是一个输入参数 - 它是您要查找的用户的UID.其余的本质上是输出参数:指向的结构pwbuf将填充密码信息,指向的指针pwbufp将被设置为pwbuf调用成功时的值(如果不成功NULL).的buf和buflen对参数指定将被用来存储由所述的成员指出,串的用户提供的缓冲区struct passwd返回的结构.
您可以像这样使用它(这使用UID 101查找用户):
struct passwd pwent;
struct passwd *pwentp;
char buf[1024];
if (getpwuid_r(101, &pwent, buf, sizeof buf, &pwentp))
{
perror("getpwuid_r");
}
else
{
printf("Username: %s\n", pwent.pw_name);
printf("Real Name: %s\n", pwent.pw_gecos);
printf("Home Directory: %s\n", pwent.pw_dir);
}
Run Code Online (Sandbox Code Playgroud)
如果是instread,您希望按名称查找用户以查找其ID,请使用getpwnam_r并检查pw_uid返回结构的字段.
| 归档时间: |
|
| 查看次数: |
7807 次 |
| 最近记录: |