0
我想要一個使用多叉的程序。
我用這個例子來讓自己開始 Multiple fork() ConcurrencyC中的多叉示例
它完美的作品原樣。但是,當我嘗試在這樣的孩子中添加打印語句時:
if ((p = fork()) == 0) {
// Child process: do your work here
printf("child %i\n", ii);
exit(0);
}
該過程從未結束。我該如何在孩子身上做些事情,並讓父母繼續完成程序的執行?
會發生什麼你的流程?你看到任何輸出嗎? –
您需要展示更多的代碼;問題不在於你向我們展示的內容。目前還不清楚'ii'設置爲什麼。您可能要考慮使用'getpid()'來打印進程ID。 (例如,我可以想象如何根據需要在父進程中增加「ii」。) –
不要在子進程中調用'exit'。使用'_exit'。否則,孩子可能會沖洗並清潔父母中仍在使用的資源。例如,這可以更改父級正在使用的文件描述符的當前位置,這可能導致數據損壞。 –