c - getlogin() c 函数返回 NULL 和错误 "No such file or directory"

标签 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;
}

这是输出: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/

相关文章:

c - 使用 fgets 从文件读取 Seg Failure 错误

c - 从 PCap 文件中读取并在 c 中打印出 IP 地址和端口号,但我的结果似乎是错误的

c++ - 扫描字符串每个字符的ASCII值

c++ - 我的编译器应该针对哪些后端语言?

c - C 语言家族的名称

c - 在创建 "stand alone"编译器时遇到困难

c++ - 在不简化的情况下在 CUDD 中表示 BDD

在 2 个进程之间使用命名管道持续通信

shell - 第一种具有交互式 shell 的编程语言?

c - realloc() 的性能影响