曲径通幽论坛

标题: waitpid [打印本页]

作者: beyes    时间: 2009-5-30 18:22
标题: waitpid
函数原型
pid_t waitpid(pid_t pid, int *stat_loc, int options)
所需头文件
#include <sys/types.h>
#include <sys/wait.h>
函数说明
waitpid() 的作用和 wait() 一样,但它并不一定要等待第一个终止的子进程,它还有若干选项,如可提供一个非阻塞版本的 wati 功能,也能支持作业控制。实际上 wati() 函数只是 waitpid() 函数的一个特例,在 Linux 内部实现 wait() 函数时直接调用的就是 waitpid() 函数。

参数说明
pid=-1 时,waitpid() 等待任何一个子进程退出,这时和 wait() 的作用是一样的。
pid=0 时,等待其组 ID 等于调用进程的组 ID 的任一子进程。
pid<-1 时,等待其组 ID 等于 pid 的绝对值的任一子进程。
pid>0 时,只等待进程 ID 等于 pid 的子进程,不管已经有其他子进程运行结束退出了,只要指定的子进程还没有结束,waitpid() 就会一直等下去。

stat_loc 参数的意义同 wait() 中的一样。

options 参数取 WNOHANG 时,若由 pid 指定的子进程不立即可用,则 waitpid() 不阻塞,此时返回值为0。(此选项比较常用)
options 参数取 WUNTRACED 时,若实现某支持作业控制,则由 pid 指定的任一子进程状态已暂停,且其状态自暂停以来还未报告过,则返回其状态。

函数返回值
正常:子进程的进程号
使用选项 WNOHANG 且没有子进程退出:0
调用出错: -1

测试代码-1
          
运行及输出
beyes@linux-beyes:~/C/call/wait> ./waitpid.exe
The child process has not exited
The child process has not exited
The child process has not exited
The child process has not exited
The child process has not exited
Get child 13116





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2