【发布时间】:2011-10-01 21:37:15
【问题描述】:
我正在尝试创建一个使用多个分叉的程序。
我用这个例子让自己开始
Multiple fork() Concurrency
它按原样完美运行。但是,当我尝试在孩子中添加这样的打印语句时:
if ((p = fork()) == 0) {
// Child process: do your work here
printf("child %i\n", ii);
exit(0);
}
这个过程永远不会结束。我怎样才能在孩子中做一些事情并让父母仍然完成程序的执行?
【问题讨论】:
-
您的流程会发生什么变化?你看到任何输出了吗?
-
你需要展示更多你拥有的代码;问题不在于您向我们展示的内容。目前尚不清楚
ii的设置是什么。您可能需要考虑使用getpid()来打印进程 ID。 (例如,我可以想象在父进程中不增加ii的方式。) -
不要给孩子打电话
exit。使用_exit。否则,子进程可能会刷新和清理父进程仍在使用的资源。例如,这可以更改父级正在使用的文件描述符的当前位置,这可能会导致数据损坏。
标签: c concurrency fork