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)运行 时?

考虑到涉及另一个不可更改的库,这几乎变得无关紧要。

在那种情况下,在调用其他库之前为环境变量设置正确的值是一个最合理的机制。