您的位置:首页 > 运维架构 > Linux

linux进程系列(8)wait函数

2017-07-10 08:52 417 查看
wait函数

1、头文件

#include <sys/types.h>

#include <sys/wait.h>

2、函数原型

1) pid_t wait(int *status);

返回: 成功返回子进程ID,出错返回-1

功能: 在一个子进程终止前,wait使其调用者阻塞

2) pid_t waitpid(pid_t pid, int *status, int options);

返回: 成功返回子进程ID,出错返回-1

功能: 在一个子进程终止前,wait使其调用者阻塞,而waitpid有一选择项,可使调用者不阻塞。

waitpid并不等待第一个终止的子进程,它有若干个选择项,可以控制它所等待的进程。

waitpid函数提供了wait函数没有提供的三个功能:

* waitpid等待一个特定的进程(而wait则返回任一终止子进程的状态)。

* waitpid提供了一个wait的非阻塞版本。有时希望取得一个子进程的状态,但不想阻塞。

* waitpid支持作业控制(以WUNTRACED选择项)

status参数:

为空时,代表任意状态结束的子进程,若不为空,则代表指定状态结束的子进程。

options参数:

WNOHANG: 若由pid指定的子进程没有退出则立即返回,则waitpid不阻塞,此时其返回值为0

WUNTRACED: 若某实现支持作业控制,则由pid指定的任一子进程状态已暂停,且其状态自暂停以来还未报告过,则返回其状态。WIFSTOPED宏确定返回值是否对应于一个暂停子进程

检查wait和waitpid所返回的终止状态的宏

WIFEXITED/WEXITSTATUS(status): 

若为正常终止子进程返回的状态,则为真。 

WIFSIGNALED/WTERMSIG(status): 

若为异常终止子进程返回的状态,则为真(接到一个不捕捉的信号)。

WIFSTOPED/WSTOPSIG(status):

若为当前暂停子进程的返回的状态,则为真。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐