2

我正在尝试访问我的环境变量之一,即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 中设置了个人环境变量来解决这个问题。

4

1 回答 1

2

你的代码很好,除了你应该明确地处理 NULL 返回值getenv()

几乎可以肯定,问题在于您如何运行代码。如果你:

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

我敢打赌它会正常工作。

于 2013-04-10T15:57:04.407 回答