使用GETENV和env不产生相同的结果:(using getenv and env doesn&#

2019-10-19 11:58发布

我有一个打印每一个环境变量,其名称由标准输入给出一个C程序。 它打印变量,如$ 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

我看到一个类似的帖子: 使用getenv的功能在哪里,解决办法是从shell启动该程序。 但我不能,因为我正在和Qtcreator调试。

我不知道我错了我,可能有人解释给我吗?

谢谢

Answer 1:

  1. 环境变量传递只设置变量之后,在那里开始的子进程。 因此,在外壳设置它们Qt Creator中不会改变任何东西,从节目开始它。
  2. Qt Creator的可定制的环境变量(我已经看到了)。
    检查项目设置(经营部)和/或Qt Creator的特性(它应该很容易找到)。
  3. 您还可以设置程序参数Qt Creator中(甚至重定向标准流)它是在项目设置,运行部分。


文章来源: using getenv and env doesn't give the same results:
标签: c qt shell env getenv