getenv("HOME") returns "/root" 与 "sudo"
getenv("HOME") returns "/root" with "sudo"
我正在我的 Raspberry Pi 上编写一个程序,需要函数 "getenv("HOME")" 来定位“/home/pi”。
但是,由于我使用的 "wiringPi" 库需要 "sudo" 到 运行,"getenv("HOME")" now returns "/ root”作为 HOME 目录,而不是“/home/pi”。
有没有办法在使用 "sudo" 运行 程序时通过 "getenv("HOME") 定位“/home/pi”?
如有任何帮助,我们将不胜感激。谢谢。
正在将评论和回复转化为答案。
如果你知道答案是/home/pi
,为什么你需要getenv("HOME")
得到错误的值?
It's because getenv("HOME")
is the code from another library I am trying to run, which I cannot change.
想必调用setenv("HOME", "/home/pi", 1)
也有点太像作弊了吧?
setenv("HOME", "/home/pi", 1)
works for me.
你为什么确定你需要的值是/home/pi
?为什么 /root
不正确,当程序被 root(或某人 运行ning sudo)运行 时?
考虑到涉及另一个不可更改的库,这几乎变得无关紧要。
在那种情况下,在调用其他库之前为环境变量设置正确的值是一个最合理的机制。
我正在我的 Raspberry Pi 上编写一个程序,需要函数 "getenv("HOME")" 来定位“/home/pi”。
但是,由于我使用的 "wiringPi" 库需要 "sudo" 到 运行,"getenv("HOME")" now returns "/ root”作为 HOME 目录,而不是“/home/pi”。
有没有办法在使用 "sudo" 运行 程序时通过 "getenv("HOME") 定位“/home/pi”?
如有任何帮助,我们将不胜感激。谢谢。
正在将评论和回复转化为答案。
如果你知道答案是/home/pi
,为什么你需要getenv("HOME")
得到错误的值?
It's because
getenv("HOME")
is the code from another library I am trying to run, which I cannot change.
想必调用setenv("HOME", "/home/pi", 1)
也有点太像作弊了吧?
setenv("HOME", "/home/pi", 1)
works for me.
你为什么确定你需要的值是/home/pi
?为什么 /root
不正确,当程序被 root(或某人 运行ning sudo)运行 时?
考虑到涉及另一个不可更改的库,这几乎变得无关紧要。
在那种情况下,在调用其他库之前为环境变量设置正确的值是一个最合理的机制。