上一篇介绍了进程的创建和退出,以及相关的系统函数。
这篇主要讲讲,子进程退出后,父进程如何获取其退出状态。
有的应用程序,需要父进程知道子进程何时终止或退出,以及其返回给父进程的状态值信息。
那么,父进程在创建完成子进程后,有没有办法获知子进程的退出状态?答案是肯定的。
Linux 提供了系统函数 wait(),用于检测子进程的终止情况。
系统函数 wait()
系统函数 wait() 主要做两件事:
- 暂停调用它的进程,直到有子进程退出。
- 获取子进程结束时传递给
exit()的值。

wait() 等待调用进程的任意一个子进程终止,其函数原型为:
#include <sys/types.h>
#include <sys/wait.h>
pid_t wait(int *wstatus);
参数 wstatus 指向的整型变量用于接收子进程的终止状态。
函数执行成功,返回终止的子进程 ID。 失败,则返回 -1。
wait() 详细的执行步骤为:
- 如果调用进程没有子进程,那么
wai()会出错,返回 -1。 - 调用此函数的进程,如果有子进程终止,
wait()立即返回。否则,调用进程一直阻塞。 - 如果 wstatus 非空,则关于子进程终止的信息会通过 wstatus 指向的整型变量返回。
- 将终止进程的 PID 作为
wait()返回值,并返回。
注意,如果调用者阻塞并且有多个子进程,那么任意一个子进程终止时,wait() 就立即返回。
因为 wait() 的返回值是终


872

被折叠的 条评论
为什么被折叠?



