我想知道是否必须等待()所有子进程在父程序中完成?
我已阅读有关fork()的手册和一些在线资源,但没有人提到强制执行父级中的wait()。
但是,如果我不在父程序中等待,则该过程不会终止,但只有在按下回车键之后才会执行任何操作,而不是终止。
答案 0 :(得分:2)
如果父进程没有为其子进程使用wait()
- 系列的系统调用,则可能只是先死掉。
当父进程终止时,其所有子进程都在进程树中的PID == 1的进程init
下移动。因此,流程init
是他们新的父流程。
我猜测您使用<Enter>
观察此行为的原因(只是猜测,它可能是错误的)是因为父进程比其子进程更早终止,所以您的终端&# 39;在孩子的一些输出之前打印出提示。按<Enter>
时,会再次打印提示。仔细检查输出。