getenv(" HOME")返回" / root"用" sudo"

时间:2015-03-12 02:56:34

标签: c++ raspberry-pi root sudo getenv

我正在我的Raspberry Pi上编写一个程序,该程序需要函数" getenv(" HOME")"找到" / home / pi"。

然而,因为我使用" wiringPi"图书馆需要" sudo"跑步," getenv(" HOME")"现在返回" / root"作为HOME目录而不是" / home / pi"。

有没有办法找到" / home / pi"与" getenv(" HOME")"使用" sudo"运行程序?

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

1 个答案:

答案 0 :(得分:1)

将评论和回复转移到答案中。

如果您知道答案是/home/pi,为什么需要getenv("HOME")来获取错误的值?

  

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

据推测,调用setenv("HOME", "/home/pi", 1)有点太像作弊了?

  

setenv("HOME", "/home/pi", 1)适合我。

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

由于涉及另一个不可更改的库,这变得无关紧要。

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