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

标签 c++ 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

关于c++ - 在 Linux 中获取主目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2910377/

相关文章:

c - 如何告诉 gcc 停止使用内置函数?

c - makefile : it doesn't behave the way I've been taught it should and I'm not sure what to do 出现问题

c++ - Arduino液晶显示屏: Generate a navigation menu by reading an array

c++ - 如何验证有效的屏幕分辨率(在 C/C++ 中)

c++ - 如何使用模板 mask mask 多个对象

const 指针抛出编译错误

linux - 如何检查我的 Apache Web 服务器配置中的语法错误

linux - apache 服务器 web 文件上的 chmod 600 仍然允许从世界访问

c++ - 函数对象应该是函数参数还是它的引用?

c++ - C++中的递增指针