我需要创建一定数量的并发子进程。我希望每个子进程都能修改一个全局变量,这样主父进程就可以打印它的最后修改版本。当我运行下面的程序时,“k”的最终值将为5,因此全局变量不会改变。如果我删除“exit(0)”部分,则全局变量会更改,但是这次创建的子进程数量会更多。
使用fork(),如何创建X个子进程,这些子进程可以修改主父进程中的数据(全局变量,局部变量等)?
使用fork(),如何创建X个子进程,这些子进程可以修改主父进程中的数据(全局变量,局部变量等)?
int k = 5; // global variable
int main(){
int i=0;
int status;
for(i = 0; i<5; i++){
if(fork() == 0){
printf("child %d %d\n", i, ++k);
sleep(5);
printf("done %d\n",i);
exit(0);
}
}
return 0;
}