我需要一种在Linux上运行的C ++程序中获取用户主目录的方法。如果相同的代码可以在Unix上运行,那就太好了。我不想使用HOME环境值。
AFAIK,根主目录是/ root。如果我的程序是由root用户运行的,可以在该目录中创建一些文件/文件夹吗?
您需要getuid获取当前用户的用户ID,然后getpwuid获取该用户的密码条目(包括主目录):
getuid
getpwuid
#include <unistd.h> #include <sys/types.h> #include <pwd.h> struct passwd *pw = getpwuid(getuid()); const char *homedir = pw->pw_dir;
注意:如果您在线程化应用程序中需要此功能,则可以getpwuid_r改用。
getpwuid_r