一尘不染

在Linux中获取主目录

linux

我需要一种在Linux上运行的C ++程序中获取用户主目录的方法。如果相同的代码可以在Unix上运行,那就太好了。我不想使用HOME环境值。

AFAIK,根主目录是/ root。如果我的程序是由root用户运行的,可以在该目录中创建一些文件/文件夹吗?


阅读 427

收藏
2020-06-03

共1个答案

一尘不染

您需要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改用。

2020-06-03