使用c中的getpwuid()检索文件的所有者名称总是抛出root

时间:2017-03-19 18:39:38

标签: c linux getpwuid

当我在我的Linux系统中以root身份登录并尝试获取文件的所有者名称时使用getpwuid()它总是显示root(lie)而不是下面的实际所有者名称是我的代码。 请帮助我获取实际名称而不是root。

int main(int argc, char *argv[])
{
        register struct passwd *access;
        register uid_t uid;
        int c;

        uid = geteuid ();
        access= getpwuid (uid);
        if (access)
        {
                puts (access->pw_name);
                exit (EXIT_SUCCESS);
        }
        fprintf (stderr,"%s: cannot find username for UID %u\n",
                        _PROGRAM_NAME, (unsigned) uid);
        exit (EXIT_FAILURE);

}

我总是以root身份获取用户名如何才能获得所有者的实际名称?

1 个答案:

答案 0 :(得分:0)

geteuid()获取进程当前正在运行的有效用户ID。由于您以root身份登录,因此将返回UID 0 - 而getpwuid()将正确地告诉您这是root。

如果您想获取文件的所有者,为什么要使用geteuid()?您需要调用stat()系列中的函数来获取该信息。