gpt4 book ai didi

c - 通过子叉内的指针增加变量值

转载 作者:太空宇宙 更新时间:2023-11-04 06:18:33 24 4
gpt4 key购买 nike

下面的代码应该执行作为参数传递给 main 的外部程序

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>


int main(int argc ,char* argv[])
{
int e =0;
int* f=&e;
printf("%p\n",f);
pid_t p ;
for(int i=1;i<argc;i++)
{
p=fork();
wait(NULL);
if(p==0)
{
printf("\n---------------------\n");
execvp(argv[i],&argv[i]);
printf("erreur \n");
(*f)=(*f)+1;
printf("%d\n",*f);
printf("%p\n",f);
exit();

}
}
if(p>0)
{
printf("erreurs: %d \n",*f );
}
return 0;
}

该程序还旨在显示发生了多少错误。但是,即使指向其地址的指针 *f 在子叉内递增,变量 e=0 仍然为 0。

我该如何解决这个问题?

最佳答案

当您调用 fork 时该过程是重复的。 parent 和 child 每个人都有自己的私有(private)内存映射,他们自己的所有变量集。一个进程不可能更改另一个进程变量的值。

如果你想在两个进程之间共享数据,你应该使用其他 inter-process communication方法,例如 shared memory .

关于c - 通过子叉内的指针增加变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40305964/

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