我们可以用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 shellexport 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/

10-12 18:04