当一个进程正常或者异常终止时,内核就向其父进程发送SIGCHLD信号。父进程可以选择忽略该信号(系统默认的方式),也可以对该信号进行回馈。
对于调用wait和waitpid的进程:
(1)如果其所有子进程都还在运行,那么该进程阻塞
(2)如果一个子进程终止,则获取子进程的终止状态,并返回
(3)如果没有子进程,返回错误
#include <sys/wait.h>
pid_t wait(int *statloc);
pid_t waitpid(pid_t pid, int *statloc, int options);
两个函数的区别:
(1)waitpid可等待一个特定的进程,而wait则返回任一终止进程的状态,一旦某个子进程结束,就返回
(2)waitpid提供一个wait的非阻塞版本
(3)waitpid支持作业控制
WIFEXITED(status) 这个宏用来指出子进程是否为正常退出的,如果是,它会返回一个非零值。