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

问题描述 投票:0回答:1

我有一个 C 程序,可以打印名称由

stdin
给出的每个环境变量。

它打印诸如

$PATH
、$USER 之类的变量,但它看不到我在 Linux shell 中自己定义的环境变量。例如,在
~/.bashrc
中,我导出了
MYTEST=test_is_working
,然后采购了
.bashrc
(
source ~/.bashrc
)。

我希望程序会输出“test_is_working”并带有

getenv
,但事实并非如此。

#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”时,我有 MYTEST=test_is_working

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

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

谢谢。

c shell qt environment-variables getenv
1个回答
1
投票
  1. 环境变量仅传递给设置变量后启动的子进程。因此,在 shell 中设置它们不会改变 Qt Creator 和从它启动的程序中的任何内容。
  2. Qt Creator 允许自定义环境变量(我见过)。
    检查项目设置(运行部分)和/或 Qt Creator 属性(应该很容易找到)。
  3. 您还可以在 qt Creator 中设置程序参数(甚至重定向标准流),它位于项目设置的运行部分。
© www.soinside.com 2019 - 2024. All rights reserved.