【问题标题】:How to retrieve the user name from the user ID如何从用户 ID 中检索用户名
【发布时间】:2012-01-06 06:53:39
【问题描述】:

我在 Unix 上实现 (ls) 命令,同时从一本书中学习。在我使用 (-l) 标志 执行 (ls) 命令的编码部分,我看到我必须提示文件的用户名和组名.到目前为止,我有来自以下几行的用户和组 ID:

struct stat statBuf;

statBuf.st_uid; //For the user id. 
statBuf.st_gid; //For the group id. 

在 Unix 上默认的 (ls) 命令中,文件的信息以显示用户名而不是用户 ID 的方式打印。

谁能帮我找到正确的方法来从他们的 ID 中检索用户名和组名?

【问题讨论】:

    标签: c unix system-calls file-descriptor stat


    【解决方案1】:

    您使用getpwuid 查找特定UID 的密码文件条目(其中包括用户名,但现在不包括密码本身)并使用getgrgid 查找特定GID 的组文件条目。

    【讨论】:

    • 我认为阅读这两个功能的手册页会告诉您需要了解的其余内容……
    【解决方案2】:

    检查我的用户名代码:

    #include <unistd.h>
    #include <sys/types.h>
    #include <pwd.h>
    
    string getUser(uid_t uid)
    {
        struct passwd *pws;
        pws = getpwuid(uid);
            return pws->pw_name;
    }
    

    对于组名,您可以使用 getgrgid。

    【讨论】:

    • 您的示例有一些缺陷:C 中没有string 类型。并且您没有检查NULL 可能返回的指针,以防uid 未知。除此之外,基本上与 Donal Fellows 的回答中建议的一组功能相同。
    猜你喜欢
    • 2013-12-11
    • 2018-03-16
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 2015-10-24
    相关资源
    最近更新 更多