c++ - 在 Linux 中获取主目录

我需要一种在 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

https://stackoverflow.com/questions/2910377/

相关文章:

linux - 在 .bashrc 中包含其他文件

linux - 如何使用 shellscript 解析 XML?

python - 如何使用 Python 的 timeit 为代码段计时以测试性能?

linux - 如何从文件中提取单个字节 block ?

python - 为什么我使用 Translate API 的 Python App Engine

python - 如何使用 PIL 将透明 png 图像与另一个图像合并

linux - 带有单引号和双引号的 bash 别名命令

python - 在 Python 中转义 HTML 的最简单方法是什么?

linux - Bash - 如何从给定的文本文件中删除所有空格?

python - 在 Python 中重置生成器对象