wait()和waitpid()的理解

来源:互联网 发布:sql 求和带条件 编辑:程序博客网 时间:2024/05/15 11:40
//等待子进程的结束(stop)或中断(terminate)#include <sys/wait.h>pid_t wait(int *stat_loc);pid_t waitpid(pid_t pid, int *stat_loc, int options);

wait()和waitpid()函数用于获取调用者子进程的状态信息。可以通过设置参数来获取已中止(terminated)或结束(stopped)的子进程的状态信息。如果两个或多个子进程的状态信息同时可获取available),它们的上报顺序未定义。

返回值:

-1: 函数调用错误。

错误的原因可通过errno获取,主要有:
(1) ECHILD 调用者不存在子进程;
(2) EINTR 该函数被一个信号中断;
(3) EINVAL option参数无效。

0: 同时满足以下条件时,waitpid()返回0:

(1)  waitpid()的options参数含有WNOHANG 属性;(2)  至少存在一个子进程存(pid为-1时),或者存在特定的某个子进程(进程ID为pid, pid > 0);(3)  条件(2)所述的子进程状态不可获取(not available)。

> 0: 已经有子进程中止或结束,返回其进程ID。