我正在我的 Raspberry Pi 上编写一个程序,该程序需要函数“getenv(“HOME”)”来定位“/home/pi”。
但是,由于我使用需要“sudo”运行的“wiringPi”库,“getenv(“HOME”)”现在返回“/root”作为主目录而不是“/home/pi”。
有没有办法在使用“sudo”运行程序时用“getenv(“HOME”)”定位“/home/pi”?
任何帮助将不胜感激。谢谢你。
我正在我的 Raspberry Pi 上编写一个程序,该程序需要函数“getenv(“HOME”)”来定位“/home/pi”。
但是,由于我使用需要“sudo”运行的“wiringPi”库,“getenv(“HOME”)”现在返回“/root”作为主目录而不是“/home/pi”。
有没有办法在使用“sudo”运行程序时用“getenv(“HOME”)”定位“/home/pi”?
任何帮助将不胜感激。谢谢你。
将评论和响应转换为答案。
如果你知道答案是/home/pi
,为什么你需要getenv("HOME")
得到错误的值?
这是因为
getenv("HOME")
是我试图运行的另一个库中的代码,我无法更改。
想必,打电话setenv("HOME", "/home/pi", 1)
也有点像作弊?
setenv("HOME", "/home/pi", 1)
为我工作。
为什么你确定你需要的值是/home/pi
?/root
当程序由 root(或运行 sudo 的人)运行时,
为什么不正确?
考虑到涉及另一个不可更改的库,这变得几乎无关紧要。
在这种情况下,在调用其他库之前为环境变量设置正确的值是一种最合理的机制。