getenv("HOME") возвращает "/root" с "sudo"
Я пишу программу на моем Raspberry Pi, для которой требуется функция "getenv("HOME")", чтобы найти "/home/pi".
Однако, поскольку я использую библиотеку "wiringPi", для запуска которой требуется "sudo", "getenv("HOME")" теперь возвращает "/ root" в качестве каталога HOME вместо "/home/pi".
Есть ли способ найти "/ home / pi" с помощью "getenv("HOME")" при использовании "sudo" для запуска программы?
Любая помощь будет оценена. Спасибо.
1 ответ
Передача комментариев и ответа в ответ.
Если вы знаете, ответ /home/pi
зачем тебе getenv("HOME")
получить неправильное значение?
Это потому что
getenv("HOME")
это код из другой библиотеки, которую я пытаюсь запустить, которую я не могу изменить.
Предположительно, звонит setenv("HOME", "/home/pi", 1)
это слишком похоже на обман?
setenv("HOME", "/home/pi", 1)
работает для меня.
Почему вы уверены, что вам нужно /home/pi
? Почему нет /root
правильно, когда программа запускается пользователем root (или кто-то работает под управлением sudo)?
Это становится в основном несущественным, если учесть, что есть еще одна неизменяемая библиотека.
В этом случае установка правильного значения для переменной среды перед вызовом другой библиотеки является в основном разумным механизмом.