当前位置: 技术问答>linux和unix
写了一个程序来根据名称打印环境变量的值;如果有两个输入参数则修改环境变量为第二个值;修改之后当时可以发现确实修改了,但是重新运行程序,发现没修改啊,
来源: 互联网 发布时间:2017-04-30
本文导语: //这段是读取变量的路径 var=argv[1]; value=getenv(var); if(value) printf("Variable %s has value %sn",var,value); else printf("Variable %s has no value n",var); //这段是修改路径,修改的路径就是第二个参数 if(argc==3){ ...
//这段是读取变量的路径
var=argv[1];
value=getenv(var);
if(value)
printf("Variable %s has value %sn",var,value);
else
printf("Variable %s has no value n",var);
//这段是修改路径,修改的路径就是第二个参数
if(argc==3){
char *string;
string=malloc(strlen(argv[1])+strlen(argv[2])+2);
value=argv[2];
strcpy(string,var);
strcat(string,"=");
strcat(string,value);
printf("Calling new putenv with %s n",string);
putenv(string);
//显示修改之后的路径
value=getenv(var);
printf("New value of %s is %s n" ,var ,value);
}
exit(0);
}
修改之后我再重新运行下这个,发现他的路径没有修改啊
|
楼主的是C文件啊,编译成执行程序后,会作为独立的进程运行。
楼主改变的是这个程序自己的环境变量,
改变之后的环境变量,可以影响这个程序本身和这个程序的子进程的环境变量;
但是不会影响其他进程(包括你的登录shell进程)的环境变量。
楼主改变的是这个程序自己的环境变量,
改变之后的环境变量,可以影响这个程序本身和这个程序的子进程的环境变量;
但是不会影响其他进程(包括你的登录shell进程)的环境变量。