getenv函数不返回预期的答案

我试图访问我的environementvariables之一,这是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; } 

我tryed std::getenv("PATH"); 这会返回一些与我的文件/etc/bash.bashrc不同的地方,在这里我放置了我的JAVA_HOMEvariables。

我期望std::getenv("JAVA_HOME")返回我放在我的/etc/bash.bashrc文件。 现在它返回不同的东西。

我怎样才能得到一个正确的environementvariables? 我究竟做错了什么 ?

我在Ubuntu 12.04下使用C ++ 11与QtCreator进行GCC 4.7.2

编辑:代码

  • 包括是包含的简写

  • 增加了NULL处理

编辑:进展

  • 我试过extern char **environ但它不包含我需要的一个variables…

编辑:部分解决scheme

我找不到这样的事情。 我已经在IDE中设置了个人环境variables来解决这个问题。

你的代码是好的,除了你应该显式地处理来自getenv()的NULL返回值。

这个问题几乎可以肯定你的代码运行方式。 如果你:

  1. 开始一个壳;
  2. 确保$JAVA_HOME在shell中正确设置(通过bashrc或其他方式);
  3. 从shell运行可执行文件;

我敢打赌,它会正常工作。