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):
若为当前暂停子进程的返回的状态,则为真。
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):
若为当前暂停子进程的返回的状态,则为真。
相关文章推荐
- 【经典转载】Linux进程学习系列之五 等待进程结束wait()和waitpid()函数
- linux进程编程-替换进程映-exec系列函数(execl,execlp,execle,execv,execvp)使用
- Linux系统进程控制编程(六)——wait和waitpid函数
- linux的子进程调用exec( )系列函数
- linux 中的进程wait()和waitpid函数,僵尸进程详解,以及利用这两个函数解决进程同步问题
- Linux进程学习---wait()和waitpid()函数
- !!!!Linux系统开发 系列 4 进程资源 环境 fork()子进程 wait() waitpid()僵尸 孤儿进程
- Linux2.6内核进程调度系列--scheduler_tick()函数2.更新实时进程的时间片
- Linux-0.11内核源码分析系列:进程调度sleep_on()函数分析
- Linux进程理解与实践(四)wait函数处理僵尸进程
- linux进程编程,exec系列函数(execl,execlp,execle,execv,execvp)使用
- linux系统编程之进程(五):exec系列函数(execl,execlp,execle,execv,execvp)使用
- linux进程编程-替换进程映-exec系列函数(execl,execlp,execle,execv,execvp)使用
- 多进程函数系列fork(), wait(), exec()系列,system(), posix_spawn()实例详解
- Linux基础学习系列:对于fork()函数的学习,及进程创建相关知识
- 二十四、Linux 进程与信号---wait 函数
- linux系统编程之进程(四):wait/waitpid函数与僵尸进程、fork 2 times
- Linux基础学习系列:对于fork()函数的学习,及进程创建相关知识
- Linux进程理解与实践(四)wait函数处理僵尸进程
- linux的子进程调用exec( )系列函数