我们可以使用c?
中的system()更新运行时值int abcd()
{
int temp1=0;
char *env=NULL;
env=getenv("ENVIRONMENT");
sscanf(env,"%d",&temp1);
temp1=temp1+1;
printf("%d",temp1);
sprintf(env,"%d",temp1);
setenv("ENVIRONMENT",env,0);
}
我想使用system()
代替setenv
。
最初在运行我在linux shell export ENVIRONMENT=0
中提供的代码之前。
答案 0 :(得分:3)
不,你不能。
system()
正在分支一个新流程,然后有一个自己的环境。它对它所做的所有更改都不会影响父进程的环境,因此您不会注意到setenv
可能发生的任何影响(除非子进程在setenv
之后执行其他操作) 。当子进程终止(可能非常快)时,那个被改变的环境就会被遗忘。
您仍然遇到正确的setenv
电话。也许你应该问一个关于你的问题的新问题。
要更改父进程的环境,父进程必须更改它。孩子只能将信息提供给其父母,然后父母必须使用这些信息。做这种事情的典型方法是:
父进程(例如在shell中):
eval "$(child)"
子进程(例如C中):
printf("setenv ENVIRONMENT=%d\n", value+1);