在 Linux 中获取主目录

新手上路,请多包涵

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

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

原文由 Alex F 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 822
2 个回答

您需要 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 代替。

原文由 R Samuel Klatchko 发布,翻译遵循 CC BY-SA 2.5 许可协议

您可以在 C++ 中使用此代码获取主目录

std::string home_dir = getenv("HOME");

原文由 Ryotaro Hoshina 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题