wait

WAIT(2)                     Linux Programmer's Manual                    WAIT(2)



名前
       wait, waitpid - プロセス(process)の終了を待つ

書式
       #include <sys/types.h>
       #include <sys/wait.h>

       pid_t wait(int *status)
       pid_t waitpid(pid_t pid, int *status, int options);

説明
       wait 関数は子供が終了(exit)する、あるいは現在のプロセスがシグナルを受け とって終了するかシグナル処理関数(signal
       handling function)が呼び出さ れるまで現在のプロセスの実行を停止(suspend)する。もし呼び出した時
       に既に子プロセスが終了していた("ゾンビ(zombie)"プロセスと呼ばれる)場合 にはこの関数はすぐに終了する。子プロセスによって使用されていた
       システムの資源は全て解放される。

       waitpid 関数は引き数 pid で指定された子供が終了する、あるいは現在のプロセスがシグナルを受け
       とって終了するかシグナル処理関数が呼び出されるまで現在のプロセスの 実行を停止する。もし呼び出された時に既に pid
       で指定された子プロセスが終了していた(ゾンビ・プロセスと呼ばれる)場合 にはこの関数はすぐに終了する。子プロセスによって使用されていたシステ
       ムの資源は全て解放される。

       pid の値は以下のどれか:

       < -1   これは プロセス・グループ(process group)ID の絶対値が pid
              に等しい子プロセスがどれか終了するまでを待つことを意味する。

       -1     これは子プロセスのどれかが終了するまで待つことを意味する; これは wait の呼び出しと等価である。

       0      これはプロセス・グループID が呼び出したプロセスと等価な子プロセスを待つ ことを意味する。

       > 0    これはプロセスID が pid に等しい子プロセスを待つことを意味する。

       options の値は以下の内容のゼロ個以上のビットORである:

       WNOHANG
              これはもし待つべき子プロセスが存在しない場合にはすぐに返ることを意味する。

       WUNTRACED
              これは子供が停止(stop)していた場合にも返ることを意味する。 状態(status)は報告されない。

       もし status NULL でないならば、 wait または waitpid status
       で指定された場所に状態(status)情報を格納する。

       この状態は以下のマクロ(macro)を使って評価できる(これらのマクロは引き数と して — 状態バッファーへのポインターでなく — 状態バッファー
       (int) を取る):

       WIFEXITED(status)
               はもし子供が通常に終了した場合にはゼロ以外である。

       WEXITSTATUS(status)
               は終了した子プロセスの exit 呼び出しの引き数か main 関数で実行された return
               文の引き数に設定される。このマクロは WIFEXITED がゼロでない場合だけ評価できる。

       WIFSIGNALED(status)
               は子プロセスが捕獲(catch)していないシグナルによって終了した場合に真(true) を返す。

       WTERMSIG(status)
               は子プロセスを終了させたシグナルの番号を返す。このマクロは WIFSIGNALED がゼロ以外の場合のみ評価できる。

       WIFSTOPPED(status)
               はもし返ってくる理由となった子プロセスが現在停止(stop)していた 場合に真を返す。これは WUNTRACED
               を使用した場合にのみおこりえる。

       WSTOPSIG(status)
               は子供を停止させたシグナルの番号を返す。このマクロは WIFSTOPPED がゼロ以外の場合のみ評価できる。

返り値
       終了した子供のプロセス ID が返される、エラーの場合は -1 が、 WNOHANG が使用されていて適切な子供が存在しない場合には 0
       が返される。 (これらの場合には errno が適切に設定される。)

エラー
       ECHILD  pid で指定したプロセスが存在しないか、呼び出したプロセスの子プロセスでない。

       EINVAL  options 引き数が不正である。

       ERESTARTSYS
               WNOHANG が設定されていなくて禁止(block)されていないシグナルや SIGCHLD
               を受けた。このエラーはシステム・コールから返される。 ライブラリー・インターフェースは ERESTARTSYS
               を返すことを許していない、かわりに EINTR が返される。

準拠
       SVr4, POSIX.1

関連項目
       signal(2), wait4(2), signal(7)



Linux                             23 June 1997                           WAIT(2)