我对getlogin()函数有疑问()。我试图使用此功能从c程序获取我的帐户的登录名。但是该函数返回NULL。使用perror表示错误是“没有这样的文件或目录”。
我不明白这是什么问题。有没有一种方法可以在程序中获取用户登录名。
这是一个示例代码:
#include <stdio.h>
#include <unistd.h>
int main()
{
char *name;
name = getlogin();
perror("getlogin() error");
//printf("This is the login info: %s\n", name);
return 0;
}
这是输出:
getlogin() error: No such file or directory
请让我知道如何正确处理此问题。
谢谢。
最佳答案
getlogin
是确定登录用户的不安全且不建议使用的方法。它可能正在尝试打开已登录用户的记录,可能是utmp
或其他内容。确定运行用户的正确方法(可能与登录用户不同,但无论如何总会更好)是getpwuid(getuid())
。
关于c - getlogin()C函数返回NULL并返回 "No such file or directory"错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4785126/