waitid() - 子プロセス状態変更の待機

標準

標準/拡張機能 C/C++ 依存項目

XPG4.2
Single UNIX Specification、バージョン 3

両方  

形式

#define _XOPEN_SOURCE_EXTENDED 1
#include <sys/wait.h>

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

機能説明

waitid() 関数は、子のいずれかが状態を変更するまで 呼び出しプロセスを中断します。これは、子の現行状態を infop によって指示された構造体に記録します。子プロセスが 呼び出し前の状態を変更した場合には、waitid() が即時に戻ります。

idtype 引数と id 引数は、waitid() が 待機する子を指定するために使用されます。

idtype が P_PID の場合には、waitid() は、(pid_t)id と等しいプロセス ID をもつ子を待機します。

idtype が P_GID の場合には、waitid() は (pid_t)id と等しいプロセス・グループ ID をもつ子を 待機します。

idtype が P_ALL の場合には、waitid() は子を 待機し、id は無視されます。

options 引数は、待機するのに変更する状態を指定する ために使用されます。これは、次のフラグの (1 つ以上) OR により指定します。
WCONTINUED
停止してから継続した子の状況が戻されます。
WEXITED
終了したプロセスを待機します。
WNOHANG
待機する子がない場合には、即時に戻します。
WNOWAIT
状況が待機可能な状態で infop に戻されるプロセスを 保持します。これはプロセスの状態に影響を与えません。この呼び出しが完了した後で、再度プロセスを待機することが あります。
WSTOPPED
シグナルを受信したときに停止した子の状況が戻されます。

infop 引数は、siginfo_t 構造体を指していなければ なりません。引数 idtypeoptions によって 指示された条件を指定した子プロセスが検出されたので、waitid() が 戻った場合には、infop が指した構造体はシステムに よってプロセスの状況が充てんされます。si_signo メンバーは 常に SIGCHLD と等しくなっています。

戻り値

子のいずれかの状態が変更したので waitid() が戻った場合は、waitid() は 0 を戻します。

正常に実行されなかった場合、waitid() は -1 を戻して、errno を次のいずれかの値に設定します。
エラー・コード
説明
ECHILD
呼び出しプロセスには、既存の非待機の子プロセスがありません。
EINTR
waitid() 関数は、呼び出しプロセスがシグナルを受信したので 中断しました。
EINVAL
無効値が options に指定されたか、idtype および id がプロセスの無効のセットを指定します。

関連情報