当一个进程正常或者异常终止的时候,内核就向其父进程发送SIGCHILD信号。
父进程可以选择忽略该信号,或者提供一个该信号发生时即被调用执行的函数。
调用wait和waitpid的进程:
- 如果其所有子进程都还在运行,则阻塞
- 如果一个子进程已终止,正等待父进程获取其终止状态,则取得该子进程的终止状态立即返回
- 如果它没有任何子进程,则立即出错返回
#include <sys/wait.h>
pid_t wait(int* statloc);
pid_t waitpid(pid_t pid,int *statloc,int options);
//两个函数返回值:若成功,返回进程ID,若出错,返回0
函数区别如下:
- 在一个子进程终止之前,wait使其调用者阻塞,而wait的有个一选项可使调用者不阻塞。
- waitpid并不等待在其调用之后的第一个终止子进程,它有若干个选项,可以控制它所等待的子进程。
这两个函数的参数statloc是一个整形指针,如果statloc不是一个空指针,则终止进程的终止状态就存放在它所指向的单元内。如果不关心终止状态,则可将参数指定为空指针。
以上内容来源于网络,仅作本人学习笔记使用,关于本书请参考APUE