-1

我正在我的 Raspberry Pi 上编写一个程序,该程序需要函数“getenv(“HOME”)”来定位“/home/pi”。

但是,由于我使用需要“sudo”运行的“wiringPi”库,“getenv(“HOME”)”现在返回“/root”作为主目录而不是“/home/pi”。

有没有办法在使用“sudo”运行程序时用“getenv(“HOME”)”定位“/home/pi”?

任何帮助将不胜感激。谢谢你。

4

1 回答 1

1

将评论和响应转换为答案。

如果你知道答案是/home/pi,为什么你需要getenv("HOME")得到错误的值?

这是因为getenv("HOME")是我试图运行的另一个库中的代码,我无法更改。

想必,打电话setenv("HOME", "/home/pi", 1)也有点像作弊?

setenv("HOME", "/home/pi", 1)为我工作。

为什么你确定你需要的值是/home/pi/root当程序由 root(或运行 sudo 的人)运行时, 为什么不正确?

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

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

于 2015-03-12T03:40:35.517 回答