我需要創建一定數量的併發子進程。我還希望每個子進程都修改一個全局變量,以便主父進程可以在其最後修改版本中進行打印。當我運行下面的程序時,'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