我需要一种在 Linux 上运行的 C++ 程序中获取用户主目录的方法。如果相同的代码可以在 Unix 上运行,那就太好了。我不想使用 HOME 环境值。
AFAIK,根主目录是/root。如果我的程序由 root 用户运行,是否可以在此目录中创建一些文件/文件夹?
最佳答案
您需要 getuid
来获取当前用户的用户 ID,然后需要 getpwuid
来获取该用户的密码条目(包括主目录):
#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>
struct passwd *pw = getpwuid(getuid());
const char *homedir = pw->pw_dir;
注意:如果您在线程应用程序中需要此功能,则需要使用 getpwuid_r
。
关于c++ - 在 Linux 中获取主目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2910377/