程序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;
}
谢谢
答案 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;
}
应使其正常工作。
(我还自由了一些,并格式化了代码以使其更具可读性)