我们可以用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
中给出的代码之前。 最佳答案
不,你不能。system()
正在派生一个新的进程,然后它有自己的环境。它对其所做的所有更改都不会影响父进程的环境,因此您不会注意到它可能会产生的setenv
的任何影响(除非子进程在setenv
之后执行其他操作)。当子进程终止(可能很快)时,就会忘记已更改的环境。
你被正确的电话困住了。也许你应该问一个关于你和那个问题的新问题。
要更改父进程的环境,父进程必须更改它。子项只能将信息返回给其父项,然后父项将必须使用此信息。做这种事的典型方法是:
父进程(例如在shell中):
eval "$(child)"
子进程(例如在C中):
printf("setenv ENVIRONMENT=%d\n", value+1);
关于c - 我们可以在C中使用system()更新运行时值吗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20993573/