我正在尝试访问我的环境变量之一,即 JAVA_HOME
。
为此,我使用 getenv()
函数,像这样:
#include <iostream>
#include <string.h>
int main() {
const char* env = getenv("JAVA_HOME");
if(env != NULL)
std::cout << "Environnement : " << env << std::endl;
else
std::cout << "NULL" << std::endl;
return 0;
}
我尝试过std::getenv("PATH");
这会返回与我的文件 /etc/bash.bashrc
不同的内容我把JAVA_HOME
放在哪里变量。
我预计std::getenv("JAVA_HOME")
返回我放入 /etc/bash.bashrc
中的内容文件。现在它返回不同的东西。
如何获得正确的环境变量?我做错了什么?
我在 Ubuntu 12.04 和 GCC 4.7.2 下使用 C++11 和 QtCreator
编辑:代码
Include[...] 是包含的简写
添加了 NULL 处理
编辑:进展
- 我尝试过
extern char **environ
但它不包含我需要的一个变量...
编辑:部分解决方案
正如我发现的那样,没有办法轻松地完成这样的事情。 我在 IDE 中设置了个人环境变量来解决这个问题。
最佳答案
您的代码很好,只是您应该显式处理 getenv()
的 NULL 返回值。
问题几乎肯定与您运行代码的方式有关。如果您:
- 启动一个 shell;
- 确保在该 shell 中正确设置
$JAVA_HOME
(通过bashrc
或任何其他方式); - 从 shell 运行可执行文件;
我打赌它会正常工作。
关于c++ - getenv 函数未返回预期答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15930696/