8.7 waitid函数-进程控制
8.7 waitid函数-进程控制
waitid函数类似于waitpid,但提供了更多的灵活性。
#include <sys/wait.h>
int waitid(idtype_t idtype, id_t id, siginfo_t *infop. int options);
//返回值:成功返回0,出错返回-1
与waitpid相似,waitid允许一个进程指定要等待的子进程。但它使用单独的参数表示要等待的子进程的类型,而不是将此与进程ID或进程组ID组合成一个参数。id参数的作用与idtype的值相关。
常量 |
说明 |
P_PID |
等待一个特定的进程:id包含要等待子进程的进程ID |
P_PGID |
等待一个特定进程组中的任一个子进程:id包含要等待子进程的进程组ID |
P_ALL |
等待任一个子进程:忽略id |
表8.3 waitid的idtype常量
options参数是图8.3中各标志的按位“或”。这些标志指示调用者关注那些状态变化。
常量 |
说明 |
WCONTINUED |
等待一个进程,它以前曾被暂停,此后又已继续,但其状态尚未报告 |
WEXITED |
等待已退出的进程 |
WNOHANG |
如无可用的子进程退出状态,立即返回而非阻塞 |
WNOWAIT |
不破坏子进程退出状态。该子进程退出状态可由后续的wait、waitid或waitpid调用取得 |
WSTOPPED |
等待一个进程,它已经暂停,但其状态尚未报告 |
图8.4 waitid的options常量
infop参数是指向siginfo结构的指针。该结构包含了有关引起子进程状态改变的生成信号的详细信息。