我需要一种在Linux上运行C++程序的用户主目录.如果相同的代码可以在Unix上运行,那就太好了.我不想使用家庭环境价值.

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++相关问答推荐

了解返回函数指针的函数定义

在严格的C89模式下,收件箱不会在' uint64_t '上发出警告

如何将FileFilter添加到FileDialog GTK 4

Ebpf内核代码:permission denied:invalid access to map value

C/SDL程序,渲染不使用我的渲染器

C lang:当我try 将3个或更多元素写入数组时,出现总线错误

如何识别Linux中USB集线器(根)和连接到集线器(根设备)的设备(子设备)?

这个计算C中阶乘的函数正确吗?

如何用C语言为CLI应用程序编写按键检测系统?

循环中的静态变量与块中的变量和循环

C:如何将此代码转换为与数组一起使用?

S,在 struct 中创建匿名静态缓冲区的最佳方式是什么?

c程序,让用户输入两类数字,并给出输出用户输入多少个数字

为什么会导致分段故障?(C语言中的一个程序,统计文件中某个单词的出现次数)

Tcl_GetDoubleFromObj在列表的迭代中是一个缺点

`%%的sscanf无法按预期工作

哪些C++功能可以在外部C块中使用

我可以使用Windows SDK';s IN6_IS_ADDR_LOOPBACK等,尽管没有文档?

如何使用 VLA 语法使用 const 指针声明函数

通过修改c中的合并排序对数组的偶数索引进行排序