进程在wait()发出时终止

时间:2014-04-18 00:41:59

标签: c linux unix process wait

当进程终止并为其发出wait()时会发生什么?当一个孩子终止但没有人为它做等待时会发生什么?如果对尚未终止的进程执行wait(),会发生什么?

1 个答案:

答案 0 :(得分:4)

如果我误解了这些问题,请告诉我:

  •   

    当一个进程终止并且为它发出wait()时会发生什么?

    已终止的进程将其退出状态返回给其父进程 使用wait

  •   

    当孩子终止但没有人为它做等待时会发生什么?

    正如你在评论中所说,被终止的孩子变成了僵尸 进程,直到其父级获得其退出状态,使用wait

  •   

    如果对未终止的进程执行wait()会发生什么   了吗?

    通常,执行wait的进程将阻塞,直到它获得其子进程的退出状态(尽管可以告诉他不要阻止,使用waitpid(2),另一个系统调用" wait系统调用组",提供更多选项)。通过块,我们的意思是它将在子进程执行时暂停其执行。当子进程终止时,它返回OS退出状态。然后将退出状态返回给使用wait的父进程,该进程在获取后恢复执行。


就僵尸程序而言:

当进程终止时,其子进程自动成为init的子进程,这是一个仅用于进行wait的进程。因此,如果僵尸进程的父级在没有wait的情况下死亡以获得其僵尸孩子的退出状态,那么init将会这样做,因为它将变成僵尸进程' s新的父母。