Я пишу небольшой код C++ для доступа и редактирования определенного текстового файла в домашнем каталоге пользователя. В настоящее время я следующий код (это соответствующая часть):Доступ к домашнему каталогу пользователя linux с помощью fstream
bool core(void) {
std::string autostart_entry = "";
std::string user_entry = "";
std::fstream username;
username.open("username.txt", std::fstream::in);
std::string location;
std::string user_name;
if (username.fail()) {
username.open("username.txt", std::fstream::out);
std::cout << "What's your system username? ";
std::getline(std::cin, user_name);
username << user_name;
}
else
username >> user_name;
username.close();
location = "/home/" + user_name + "/.config/openbox/autostart";
...
}
Таким образом, как вы можете видеть, я прошу у пользователя его имя пользователя и добавить его в строку местоположения, есть ли простой способ найти пользовательский домашний каталог без запроса ввода пользователя? Я пробовал «~/...», и он не работает.
Я знаю, что могу сканировать файл «/ etc/passwd», чтобы найти его оттуда, но мне интересно, есть ли другой способ.
по умолчанию каталог находится в/home/user_name, но необязательно. Было бы разумнее читать/etc/passwd – Pooya
Вам не нужно запрашивать у пользователя свое имя пользователя. В системах linux можно использовать 'chdir', чтобы сделать то же самое. Проверьте мой ответ ниже для полного раскрытия. Пожалуйста, примите, если это поможет! ;) –