gpt4 book ai didi

C编程。打印当前用户

转载 作者:太空狗 更新时间:2023-10-29 15:10:29 24 4
gpt4 key购买 nike

在 C 编程中,如何获取当前用户和当前工作目录。我正在尝试打印这样的东西:

  asmith@mycomputer:~/Desktop/testProgram:$
(user) (computerName) (current directory)

我有以下代码,但用户名显示为 NULL。知道我做错了什么吗?

void prompt()
{
printf("%s@shell:~%s$", getenv("LOGNAME"), getcwd(currentDirectory, 1024));
}

最佳答案

除了您应该使用环境变量 USER 而不是 LOGNAME 之外,您一开始就不应该为此使用环境变量。您可以使用 getuid(2) 获取当前用户 ID和当前有效用户 ID geteuid(2) , 然后使用 getpwuid(3)从密码文件中的用户 ID 获取用户名:

struct passwd *p = getpwuid(getuid());  // Check for NULL!
printf("User name: %s\n", p->pw_name);

要获取当前计算机名称,请使用 gethostname(2) :

char hostname[HOST_NAME_MAX+1];
gethostname(hostname, sizeof(hostname)); // Check the return value!
printf("Host name: %s\n", hostname);

关于C编程。打印当前用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1451825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com