我对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/

10-10 17:40