Поиск моего домашнего каталога в C / Unix

Я написал оболочку, и всякий раз, когда пользователь дает аргумент типа cd -blabla, он меняет каталог на bla bla. Но когда я ввожу cd, я хочу, чтобы он перешел в мой домашний каталог. Назначить мой домашний каталог очень просто. Я просто написал, где находится дом для терминала. чтобы найти свой домашний каталог, но я могу изменить свой домашний каталог. Если я введу свой адрес в функцию chdir () вручную, он всегда будет переходить в этот каталог. Как мне найти самый обновленный домашний каталог в C? (который меняется каждый раз Я меняю свой домашний каталог)


person Curriculaa    schedule 12.03.2016    source источник
comment
Это дубликат этого вопроса   -  person JJF    schedule 12.03.2016
comment
Что означает самый обновленный домашний каталог ??? Домашний каталог не меняется часто, он обычно считается постоянным с течением времени. В любом случае, вы можете получить переменную среды HOME или прочитать passwd db, чтобы получить запись в каталоге пользователя.   -  person Jean-Baptiste Yunès    schedule 12.03.2016


Ответы (1)


Вы должны посмотреть pwd.h. Вы можете получить информацию о пользователе по UID или имени.

Пример по id

struct passwd *info = getpwuid(1000);

Измените 1000 на нужный вам UID. Вы можете использовать getuid (), определенный в unistd.h, чтобы получить текущего пользователя.

Поле

info->pw_dir

Содержит домашний путь пользователя.

person mame98    schedule 13.03.2016