14

我在 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 中检索用户名和组名?

4

2 回答 2

25

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

于 2011-11-25T11:25:46.217 回答
6

检查我的用户名代码:

#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。

于 2018-08-23T06:48:01.137 回答