gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:21:55 25 4
gpt4 key购买 nike

我们可以使用 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() 正在 fork 一个新进程,该进程有自己的环境。它对其所做的所有更改都不会影响父进程的环境,因此您不会注意到 setenv 它可能会产生的任何影响(除非子进程在 之后执行其他操作设置环境)。当子进程终止时(可能非常快),改变后的环境就会被遗忘。

您被正确的 setenv 调用困住了。也许你应该问一个关于你的问题的新问题。

要改变父进程的环境,父进程必须改变它。 child 只能将信息返回给其 parent ,然后 parent 将不得不使用这些信息。做这种事情的典型方法是这样的:

父进程(例如在 shell 中):

eval "$(child)"

子进程(例如在 C 中):

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

关于我们可以在 c 中使用 system() 更新运行时值吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20993573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com