Возвратитесь домой каталог в Linux

Мне нужен способ получить пользовательский корневой каталог в программе C++, работающей на Linux. Если бы тот же код работает над Unix, это было бы хорошо. Я не хочу использовать значение Домашней среды.

AFAIK, корневой корневой каталог является корнем/. Это в порядке для создания некоторых файлов/папок в этом каталоге, в случае моя программа работает пользователем root?

63
задан Jean-François Fabre 8 December 2018 в 20:57
поделиться

2 ответа

Вам понадобится getuid , чтобы получить идентификатор текущего пользователя, а затем getpwuid , чтобы получить запись пароля (который включает домашний каталог) этого пользователя:

#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>

struct passwd *pw = getpwuid(getuid());

const char *homedir = pw->pw_dir;

Примечание : если вам это нужно в многопоточном приложении, вы захотите использовать вместо него getpwuid_r .

89
ответ дан 24 November 2019 в 16:12
поделиться

Если вы запускаете программу от имени пользователя root, у вас будет доступ rwx к этому каталогу. Думаю, создавать что-то внутри - это нормально.

0
ответ дан 24 November 2019 в 16:12
поделиться