当我在我的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身份获取用户名如何才能获得所有者的实际名称?
答案 0 :(得分:0)
geteuid()
获取进程当前正在运行的有效用户ID。由于您以root身份登录,因此将返回UID 0 - 而getpwuid()
将正确地告诉您这是root。
如果您想获取文件的所有者,为什么要使用geteuid()
?您需要调用stat()
系列中的函数来获取该信息。