在C编程中,如何获取当前用户和当前工作目录。 我正在尝试打印这样的东西:
asmith@mycomputer:~/Desktop/testProgram:$ (user) (computerName) (current directory)
我有以下代码,但用户名显示为NULL。 我有什么想法我做错了吗?
void prompt() { printf("%s@shell:~%s$", getenv("LOGNAME"), getcwd(currentDirectory, 1024)); }
请注意,这仅适用于unix系统。
可能是LOGNAME未设置为您的环境变量,您可以使用printenv
命令查看环境变量
printf("%s@shell:%s$", getenv("USER"),getenv("PWD"))
这项工作也是如此。
但如上所述,你不应该依赖环境变量,而是使用标准的c函数。如果你真的想使用它们,首先要确保它已经设置好了。
除了您应该使用环境变量USER
而不是LOGNAME
这一事实之外,您不应该首先使用环境变量。 您可以使用getuid(2)
获取当前用户ID,使用geteuid(2)
当前有效用户ID,然后使用getpwuid(3)
从passwd文件中获取用户ID的用户名:
struct passwd *p = getpwuid(getuid()); // Check for NULL! printf("User name: %sn", p->pw_name);
要获取当前计算机名称,请使用gethostname(2)
:
char hostname[HOST_NAME_MAX+1]; gethostname(hostname, sizeof(hostname)); // Check the return value! printf("Host name: %sn", hostname);
在类似unix的系统上,使用unistd.h中的getlogin函数。
这不是一个C问题,但更像是一个UNIX问题。 没有可移植的方式来获取C语言中的用户名和当前工作目录 。
但是,通过查看您的示例,我可以告诉您正在尝试打印当前的UNIX用户名和当前工作目录。
如果在UNIX中需要当前工作目录, 请检查getcwd函数 。
如果您需要当前用户名,可以在C程序中调用单独的whoami进程,或者检查getuid函数调用 。
这将是特定于平台的,因为C编程语言中没有内在的方法来执行此操作。
看起来你是在基于Unix的系统上,所以你可能想要得到环境变量USER
,它通常是登录名。
你也可以用
#include main() { system("echo %username%"); /* This is for Windows * instead use system("echo $USER"); for UNIX */ }
以上就是c/c++开发分享C编程。 打印当前用户相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/544808.html