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'。否则,孩子可能会冲洗并清洁父母中仍在使用的资源。例如,这可以更改父级正在使用的文件描述符的当前位置,这可能导致数据损坏。 –