Linux中的C语言-使用execle()输出环境变量?

时间:2018-09-15 15:50:30

标签: c linux

程序1

在程序1中,我尝试创建唯一的环境变量envar,将其放入env数组中,该数组传递给execle函数,以创建要在其中运行程序2的环境。

#include <stdio.h>
#include <unistd.h>

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

int ret;
char envar[] = "Big ol' environment variable ;D"; 
char *env[2] = {envar, 0};

ret = execle("./exec_test1.1", "exec_test1.1", 0, env);

printf("my prog failed ret = %d", ret);

return 0;
}

程序2

我打算将此代码放在同一目录中,以便在执行时检索环境变量envar并进行打印。但是,我搜索到的输出为空“ memes and dis(null)”,但看不到我的错误。程序二与我出于相同目的而发现的另一个几乎相同,因此我认为我的错误在于程序一。

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

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

char *envptr = getenv("envar");

printf("memes and dis %s\n", envptr);

return 0;

}

谢谢

1 个答案:

答案 0 :(得分:0)

您使用了错误的envar变量格式-它必须为NAME=VALUE。因此,将程序1固定为:

#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
    int ret;
    char envar[] = "envar=Big ol' environment variable ;D"; 
    char *env[2] = {envar, 0};

    ret = execle("./exec_test1.1", "exec_test1.1", 0, env);
    printf("my prog failed ret = %d", ret);

    return 0;
}

应使其正常工作。

(我还自由了一些,并格式化了代码以使其更具可读性)