0
内部指针递增一个变量的值下面这段代码应该执行作为参数传递外部程序主要通过儿童叉
#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。
我该如何解决这个问题?
分叉后,孩子收到父母的记忆的副本。因此对变量的更改不会传播回父级。 –
整个过程的关键是它们有单独的地址空间。如果你想在进程之间共享内存,你必须在分叉之前设置它(参见mmap),然后确保你的e变量在该共享内存块中。 – PSkocik