如何从用户标识中检索用户名

时间:2011-11-25 11:17:35

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

我正在从一本书中学习,在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中检索用户名和组名吗?

2 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分: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。