分类: 系统运维
2012-03-29 13:25:38
SUS的XSI扩展包含了一个补充的函数来获取一个进程的退出状态。waitid函数和waitpid相似,但提供了额外的灵活性。
和waitpid相似,waitid允许一个进程指定要等待哪些子进程。不是把这个信息和进程ID或进程组ID一起合并到单个参数里,而是使用两个单独的参数。参数id的解释基于idtype的值。被支持的类型在下表汇总:
waitid的idtype常量 | |
常量 | 描述 |
P_PID | 等待特定的进程:id包含等待的子进程ID |
P_PGID | 等待任何在特定进程组里的子进程:id包含等待的子进程的进程组ID |
P_ALL | 等待所有子进程:id被忽略 |
waitid的options常量 |
|
常量 | 描述 |
WCONTINUED | 等待之前停止但被继续的,但其状态还没有被报告的进程 |
WEXITED | 等待已经退出的进程 |
WNOHANG | 在没有可用的子进程退出状态时,立即返回,而不是阻塞 |
WNOWAIT | 不摧毁子进程的退出状态。子进程的退出状态可以被随后的wait、waitid或waitpid得到 |
WSTOPPED | 等待一个停止的且状态还没有被报告的进程 |
infop参数是一个指向siginfo结构体的指针。这个结构体包括关于导致子进程状态改变的产生的信号的细节信息。siginfo结构体在10.14节更深入地讨论。
本文讨论的4个平台里,只有Solaris提供对waitid的支持。