我正在我的Raspberry Pi上编写一个程序,该程序需要函数" getenv(" HOME")"找到" / home / pi"。
然而,因为我使用" wiringPi"图书馆需要" sudo"跑步," getenv(" HOME")"现在返回" / root"作为HOME目录而不是" / home / pi"。
有没有办法找到" / home / pi"与" getenv(" HOME")"使用" sudo"运行程序?
任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
将评论和回复转移到答案中。
如果您知道答案是/home/pi
,为什么需要getenv("HOME")
来获取错误的值?
这是因为
getenv("HOME")
是我试图运行的另一个库中的代码,我无法更改。
据推测,调用setenv("HOME", "/home/pi", 1)
有点太像作弊了?
setenv("HOME", "/home/pi", 1)
适合我。
为什么您确定所需的值是 /home/pi
?当程序由root(或运行sudo的人)运行时,为什么/root
不正确?
由于涉及另一个不可更改的库,这变得无关紧要。
在这种情况下,在调用其他库之前为环境变量设置正确的值是一种最合理的机制。