getlogin()c函数返回NULL并错误"没有这样的文件或目录"

yaa*_*ami 10 c programming-languages

我有一个关于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;
}
Run Code Online (Sandbox Code Playgroud)

这是输出: getlogin() error: No such file or directory

请告诉我如何做到这一点.

谢谢.

R..*_*R.. 18

getlogin是一种不安全且已弃用的确定登录用户的方法.它可能试图打开登录用户的记录,或许utmp或某事.确定您正在运行的用户的正确方法(可能与登录用户不同,但几乎总是更好地使用)getpwuid(getuid()).

  • 谢谢你这对我有用.这是我使用的示例代码.#include <stdio.h> #include <pwd.h> int main(){char*name; struct passwd*pass; pass = getpwuid(getuid()); name = pass-> pw_name; printf("这是登录名:%s \n",名称); 返回0; } (5认同)