使用getenv和env不会给出相同的结果:

时间:2014-03-06 09:52:18

标签: c qt shell env getenv

我有一个C程序打印每个环境变量,其名称由stdin给出。它打印变量,如$ PATH,$ USER,但它没有看到我在Linux shell中定义的环境变量...例如,在〜.bashrc中我导出了MYTEST = test_is_working,然后我找到了bashrc(源代码) 〜/ .bashrc中)。  我希望程序能够使用getenv返回test_is_working,但事实并非如此。

#include <QCoreApplication>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    char* my_env= getenv("MYTEST");

    if(my_env!=NULL){
        printf("my env is : %s \n", my_env);
    }
    else {
        printf("can't find env \n");
    }
return a.exec();
}

它返回:找不到env

当我打开终端并输入“env”时,我有MYTEST = test_is_working

我看到了类似的帖子:Using getenv function 解决方案是从shell启动程序。但我不能,因为我在Qtcreator中运行和调试。

我不知道我哪里错了,有人可以向我解释一下吗?

感谢

1 个答案:

答案 0 :(得分:1)

  1. 环境变量仅传递给在设置变量后启动的子进程。所以在shell中设置它们不会改变Qt Creator中的任何内容,也不会从它启动程序。
  2. Qt Creator允许自定义环境变量(我见过它) 检查项目设置(运行部分)和/或Qt Creator属性(应该很容易找到)。
  3. 您还可以在qt creator中设置程序参数(甚至重定向标准流),它位于项目设置,运行部分。