我需要创建一定数量的并发子进程。我还希望每个子进程都修改一个全局变量,以便主父进程可以在其最后修改版本中进行打印。当我运行下面的程序时,'k'的最终值将是5,所以全局变量不会改变。如果我删除“exit(0)”部分,那么全局变量会改变,但是这次创建的子进程数量会变大。如何使用fork创建一定数量的子进程()
使用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;
}
你回答了你自己的问题 - 使用for循环。 – 2011-02-16 17:36:28