Нужно создать папку в /home/user в Linux, для этого нужно в коде прописать путь. Как получить имя этого user-а?
https://en.cppreference.com/w/cpp/utility/program/getenv
Имя пользователя, скорее всего, можно узнать как std::getenv("USER"), хотя зачем, если std::getenv("HOME") сразу даст домашний путь.
Функция getpwuid() возвращает указатель на структуру, содержащую поля строки из файла /etc/passwd для записи, совпадающей с идентификатором пользователя uid.
Структура passwd определена в файле следующим образом:
struct passwd {
char *pw_name; /* имя пользователя */
char *pw_passwd; /* пароль пользователя */
uid_t pw_uid; /* id пользователя */
gid_t pw_gid; /* id группы */
char *pw_gecos; /* настоящее имя */
char *pw_dir; /* домашний каталог */
char *pw_shell; /* программа-оболочка */
};
Это можно реализовать в два шага: получение идентификатора пользователя затем получение информации о пользователе по идентификатору:
errno = 0;
auto const uid{::geteuid()};
if(0 != errno)
{
// handle error
}
if(NO_UID == uid)
{
// handle error
}
errno = 0;
auto const p_info{::getpwuid(uid)};
if(0 != errno)
{
// handle error
}
if(nullptr == p_info)
{
// handle error
}
auto const psz_user_name{p_info->pw_name};
if(nullptr == psz_user_name)
{
// handle error
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости