waitid函数

waitid函数

Single Unix Specification的XSI扩展包含了附加函数,用于接收进程的退出状态。waitid函数类似于waitpid,但是提供额外的灵活性。

#include <sys/wait.h>

int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options);

Returns: 0 if OK, 1 on error

waitpidwaitid允许进程专门接收某一子进程的终止状态。取替了将PID(进程ID)和PGID(进程组ID)捆绑成单独的一个参数,用两个分开的参数代替。

id的值是根据idtype的值而定的,下面是它可选的值:

Figure 8.9. The idtype constants for waitid

Constant

Description

P_PID

子进程的PID(进程ID)

P_PGID

子进程的PGID(组ID)

P_ALL

所有子进程,ID参数被忽略。

options参数是一个掩码位,用标记的OR操作决定最后的值。这个标记指示了,哪些状态改变是调用者感兴趣的。

Figure 8.10. The options constants for waitid

Constant

Description

WCONTINUED

之前已经停止的进程,但它没有释放资源 ,并且没有报告它的运行状态。

WEXITED

已经退出的进程。

WNOHANG

如果没有可用的子进程退出状态,那么立即返回,而不是阻塞进程。

WNOWAIT

不删除子进程的退出状态。子进程的退出状态可以被后续调用的wait, waitidwaitpid接收。

WSTOPPED

子进程已经停止,但还没有报告它的状态。

 

infop参数是一个指向siginfo结构的指针。这个结构包含了关于在子进程中已产生的信号的详细信息。

发表评论