日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
wait3 |
子プロセスが停止または終了するのを待ちます。
#include <wait.h>pid_t wait3 (int *status_location, int options, struct rusage *resource_usage);
status_location
<wait.h>ヘッダ・ファイルに定義されている,子プロセスの終了状態を含んでいる位置へのポインタ。OpenVMS Version 7.2 およびそれ以降, _VMS_WAIT マクロを定義してコンパイルした場合, wait3関数は status_location 引数で指定されたアドレスに,子プロセスの OpenVMS 完了コードを格納するようになりました。
options
関数の動作を変更するフラグ。これらのフラグの定義は,説明のセクションに示しています。resource_usage
終了した子プロセスのリソース利用情報を含んでいる構造体の位置。
wait3関数は,要求が完了するまで呼び出し元プロセスを一時停止し,呼び出し元スレッドのみが一時停止するように再定義を行います。options 引数は関数の動作を変更します。 options 引数のフラグは,ビット論理和を指定することで組み合わせることができます。以下にフラグを示します。
WNOWAIT status_location に状態が返されるプロセスを,待機可能状態に置くよう指定する。このプロセスを再び待っても,同じ結果が得られる。 WNOHANG 呼び出し元プロセスが一時停止しないようにする。停止または終了した子プロセスが複数存在する場合には, WNOHANG フラグが指定されなかった場合と同様に,そのうちの 1 つが選ばれ, waitpid 関数はその子プロセスのプロセス ID を返す。終了したプロセスが存在しない (つまり, waitpid が呼び出し元プロセスを WNOHANG フラグなしで一時停止した ) 場合には,0 (ゼロ) が返される。プロセス 0 を待つことはできないので,この戻り値から混乱が生じることはない。 WUNTRACED 子プロセスが SIGTTIN,SIGTTOU,SIGSTOP,または SIGTSTOP シグナルを受信したために,カレント・プロセスの子プロセスが停止したときに,呼び出しに追加情報を返させるように指定する。
wait3関数が,子プロセスの状態が入手可能であるために返った場合には,子プロセスのプロセス ID が返されます。情報は,status_location が null でなければ,このポインタがポイントしている位置に格納されます。
status_location がポイントする位置に格納される値が 0 (ゼロ) になるのは,状態が以下のいずれかを行った終了した子プロセスから返された場合に限られます。
- main関数から 0 を返した。
- _exitまたは exit関数の status 引数として 0 を渡した。
status_location の値にかかわらず,この情報は, <wait.h>ヘッダ・ファイルに定義されている,整数式に評価されるマクロを使って定義することができます。以下のマクロの説明では, status_value 引数は status_location 引数がポイントしている整数値と等しい値です。
WIFEXITED (status_value ) 正常に終了した子プロセスの状態が返された場合に,ゼロ以外の値に評価される。 WEXITSTATUS (status_value ) WIFEXITED (status_value ) の値がゼロ以外である場合,このマクロは,子プロセスが _exit または exit 関数に渡した status 引数の下位 8 ビットか,子プロセスが main 関数から返した値に評価される。 WIFSIGNALED (status_value ) キャッチされなかったシグナルが受信されたために終了した子プロセスの状態が返された場合に,ゼロ以外の値に評価される。 WTERMSIG (status_value ) WIFSIGNALED (status_value ) の値がゼロ以外である場合,このマクロは,子プロセスを終了させたシグナルの番号に評価される。 WIFSTOPPED (status_value ) 現在停止している子プロセスの状態が返された場合に,ゼロ以外の値に評価される。 WSTOPSIG (status_value ) WIFSTOPPED (status_value ) の値がゼロ以外である場合,このマクロは,子プロセスを停止させたシグナルの番号に評価される。 WIFCONTINUED (status_value ) 実行を再開した子プロセスの状態が返された場合に,ゼロ以外の値に評価される。
status_location がポイントする位置に格納された情報が, WUNTRACEDフラグを指定した wait3呼び出しによって格納されていた場合には,以下のいずれかのマクロがゼロ以外の値に評価されます。
- WIFEXITED(*status_value)
- WIFSIGNALED(*status_value)
- WIFSTOPPED(*status_value)
- WIFCONTINUED(*status_value)
status_location がポイントする位置に格納された情報が, WUNTRACEDフラグを指定しない wait3呼び出しによって格納されていた場合には,以下のいずれかのマクロがゼロ以外の値に評価されます。
- WIFEXITED(*status_value)
- WIFSIGNALED(*status_value)
wait3関数は BSD システムとの互換性を備えています。 resource_usage 引数は, <resource.h>ヘッダ・ファイルに定義されている子プロセス用のリソース使用情報を含んだ位置をポイントします。
親プロセスが,すべての子プロセスが終了するのを待たずに終了した場合,残った子プロセスには, initプロセスのプロセス ID に等しい親プロセス ID が割り当てられます。
exit, _exit,および initも参照してください。
0 成功を示します。停止または終了した子プロセスは存在せず, WNOHANG オプションが指定されています。 x 子プロセスの process_id。子プロセスの状態が取得可能です。 -1 エラーを示します。 errno は以下のいずれかの値に設定されます。
- ECHILD---待機すべき子プロセスが存在しない。
- EINTR---呼び出し元プロセスがキャッチしたシグナルの受信によって終了した。
- EFAULT--- status_location または resource_usage 引数は,プロセスのアドレス空間の外の位置をポイントしている。
- EINVAL--- options 引数の値が無効である。
目次 | 索引 |
|