当进程终止并为其发出wait()时会发生什么?当一个孩子终止但没有人为它做等待时会发生什么?如果对尚未终止的进程执行wait(),会发生什么?
答案 0 :(得分:4)
如果我误解了这些问题,请告诉我:
当一个进程终止并且为它发出wait()时会发生什么?
已终止的进程将其退出状态返回给其父进程
使用wait
。
当孩子终止但没有人为它做等待时会发生什么?
正如你在评论中所说,被终止的孩子变成了僵尸
进程,直到其父级获得其退出状态,使用wait
。
如果对未终止的进程执行wait()会发生什么 了吗?
通常,执行wait
的进程将阻塞,直到它获得其子进程的退出状态(尽管可以告诉他不要阻止,使用waitpid(2)
,另一个系统调用" wait
系统调用组",提供更多选项)。通过块,我们的意思是它将在子进程执行时暂停其执行。当子进程终止时,它返回OS退出状态。然后将退出状态返回给使用wait
的父进程,该进程在获取后恢复执行。
就僵尸程序而言:
当进程终止时,其子进程自动成为init
的子进程,这是一个仅用于进行wait
的进程。因此,如果僵尸进程的父级在没有wait
的情况下死亡以获得其僵尸孩子的退出状态,那么init
将会这样做,因为它将变成僵尸进程' s新的父母。