我们可以使用c中的system()来更新运行时值

时间:2014-01-08 10:56:31

标签: c linux

我们可以使用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中提供的代码之前。

1 个答案:

答案 0 :(得分:3)

不,你不能。

system()正在分支一个新流程,然后有一个自己的环境。它对它所做的所有更改都不会影响父进程的环境,因此您不会注意到setenv可能发生的任何影响(除非子进程在setenv之后执行其他操作) 。当子进程终止(可能非常快)时,那个被改变的环境就会被遗忘。

您仍然遇到正确的setenv电话。也许你应该问一个关于你的问题的新问题。

要更改父进程的环境,父进程必须更改它。孩子只能将信息提供给其父母,然后父母必须使用这些信息。做这种事情的典型方法是:

父进程(例如在shell中):

eval "$(child)"

子进程(例如C中):

printf("setenv ENVIRONMENT=%d\n", value+1);