gpt4 book ai didi

c - Unix编程。不确定如何使用 passwd 结构

转载 作者:太空狗 更新时间:2023-10-29 14:56:52 24 4
gpt4 key购买 nike

我已经做了一些研究,但我仍在为 passwd 结构而苦苦挣扎。

http://www.opengroup.org/onlinepubs/000095399/basedefs/pwd.h.html

我需要获取用户 ID,但我认为我根本没有理解它。

int getpwuid_r(uid_t, struct passwd *, char *, size_t, struct passwd **);

此方法调用返回一个指向将包含我需要的所有数据的结构的点。我对参数很困惑。

结构密码。我需要先声明吗?结构密码密码?

我完全不知道如何使用它。

最后,一旦我填满了我的指针。我将使用什么电话来获取数据?感谢您的帮助。

最佳答案

getpwuid_r签名中:

int getpwuid_r(uid_t uid, struct passwd *pwbuf, char *buf, 
size_t buflen, struct passwd **pwbufp);

uid 是一个输入参数 - 它是您要查找的用户的 UID。其余本质上是输出参数:pwbuf指向的结构体会被填充密码信息,pwbufp指向的指针会被设置为的值code>pwbuf 如果调用成功(如果不成功则为 NULL)。 bufbuflen 参数对指定一个用户提供的缓冲区,用于存储 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);
}

如果您想按名称查找用户以找到他们的 ID,请使用 getpwnam_r 并检查返回结构的 pw_uid 字段。

关于c - Unix编程。不确定如何使用 passwd 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1610203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com