unix环境编程第八章 8.6函数wait和waitpid

当一个进程正常或者异常终止的时候,内核就向其父进程发送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

上一篇:为什么Windows 7的32位版不能支持4GB以上内存呢?


下一篇:【计算机网络】——TCP三次握手和四次挥手详解