LINUX.ORG.RU

getenv() vs getpwuid()


0

0

Требуется из программы получить значение $HOME.

Нахожусь в раздумьях, как это лучше и оптимальнее сделать: использовать переменную окружения, с помощью getenv() или же считать из /etc/passwd, с помощью getpwuid(geteuid()) ?

Хотел узнать у вас, разработчики, какой путь использовали бы вы? Интересуют два аспекта: наибольшая безопасность и скорость. Мне почему-то кажется, что вариант с getenv() быстрее, а читать из /etc/passwd более безопасно.

Что скажете?

★★★★★

Так и есть. Только вместо getpwuid(geteuid()) Вы наверно хотели сказать getpwuid(getuid()) ? Не думаю, что разница в скорости этих двух подходов должна Вас беспокоить.

bbk123 ★★★★★
()

В книжке по программированию в linux ничем не ругают getenv(),а даже говорят, что так и делают разработчики.

Selecter ★★★★
()
Ответ на: комментарий от Selecter

Теоретически getenv("HOME") может вернуть NULL. Например если запускающий программу скрипт перемудрил с переменными окружения.

bbk123 ★★★★★
()

Я так понимаю, что твой вопрос звучит "Как мне найти home directory
текущего пользователя", так?

Этот вопрос часто задается в comp.unix.programmer, если ты поищешь
в архивах этой группы (через Google Groups) по "home directory" то
найдешь кучу обсуждений прямо на первой же странице.
BTW, есть еще методы, кроме перечисленных тобой двух. Никакого
"единственно правильного" ответа нет, однако обычно getenv("HOME")
является самым, хммм... адекватным, что-ли.

(да, и к безопасности этот вопрос отношения не имеет)

HTH

Onanim
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.