我需要在fork之后在父进程中等待()吗?

时间:2014-05-17 17:50:05

标签: c linux unix fork wait

我想知道是否必须等待()所有子进程在父程序中完成?

我已阅读有关fork()的手册和一些在线资源,但没有人提到强制执行父级中的wait()。

但是,如果我不在父程序中等待,则该过程不会终止,但只有在按下回车键之后才会执行任何操作,而不是终止。

1 个答案:

答案 0 :(得分:2)

如果父进程没有为其子进程使用wait() - 系列的系统调用,则可能只是先死掉。

当父进程终止时,其所有子进程都在进程树中的PID == 1的进程init下移动。因此,流程init是他们新的父流程。


猜测您使用<Enter>观察此行为的原因(只是猜测,它可能是错误的)是因为父进程比其子进程更早终止,所以您的终端&# 39;在孩子的一些输出之前打印出提示。按<Enter>时,会再次打印提示。仔细检查输出。