日本-日本語

製品  >  ソフトウェア  >  OpenVMS  >  マニュアル

OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトル
目次
まえがき
リファレンス・セクション
   ≫ライブラリ関数一覧
索引
PDF
OpenVMS ホーム

HP OpenVMS
HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)


目次 索引




子プロセスが停止または終了するのを待ちます。

形式

#include <wait.h>

pid_t wait4 (pid_t process_id, union wait *status_location, int options, struct rusage *resource_usage);


引数



status_location

<wait.h>ヘッダ・ファイルに定義されている,子プロセスの終了状態を含んでいる位置へのポインタ。

OpenVMS Version 7.2 およびそれ以降, _VMS_WAIT マクロを定義してコンパイルした場合, wait4関数は status_location 引数で指定されたアドレスに,子プロセスの OpenVMS 完了コードを格納するようになりました。

process_id

子プロセスまたは子プロセスのセット。

options

関数の動作を変更するフラグ。これらのフラグの定義は,説明のセクションに示しています。

resource_usage

終了した子プロセスのリソース利用情報を含んでいる構造体の位置。

説明

wait4関数は,要求が完了するまで呼び出し元プロセスを一時停止します。

process_id 引数により,呼び出し元プロセスは,次の規則に従って特定の子プロセスのセットの状態を収集することができます。

process_id の値 要求される状態
- 1 に等しい 任意の子プロセス。この点で, waitpid 関数は wait 関数と等価である。
0 よりも大きい 1 つの子プロセスについて,プロセス ID を指定する。

wait4関数は,このセットの子プロセスの状態のみを返します。

options 引数は wait4関数の動作を変更します。 options 引数のフラグは,ビット論理和を指定することで組み合わせることができます。以下にフラグを示します。

WNOWAIT status_location に状態が返されるプロセスを,待機可能状態に置くよう指定する。このプロセスを再び待っても,同じ結果が得られる。
WNOHANG 呼び出し元プロセスが一時停止しないようにする。停止または終了した子プロセスが複数存在する場合には, WNOHANG フラグが指定されなかった場合と同様に,そのうちの 1 つが選ばれ, waitpid 関数はその子プロセスのプロセス ID を返す。終了したプロセスが存在しない ( つまり, waitpid が呼び出し元プロセスを WNOHANG フラグなしで一時停止した) 場合には, 0 (ゼロ) が返される。プロセス 0 を待つことはできないので,この戻り値から混乱が生じることはない。
WUNTRACED 子プロセスが SIGTTIN,SIGTTOU,SIGSTOP,または SIGTSTOP シグナルを受信したために,カレント・プロセスの子プロセスが停止したときに,呼び出しに追加情報を返させるように指定する。

wait4関数が,子プロセスの状態が入手可能であるために返った場合には,子プロセスのプロセス 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フラグを指定した wait4呼び出しによって格納されていた場合には,以下のいずれかのマクロがゼロ以外の値に評価されます。

  • WIFEXITED(*status_value)

  • WIFSIGNALED(*status_value)

  • WIFSTOPPED(*status_value)

  • WIFCONTINUED(*status_value)

status_location がポイントする位置に格納された情報が, WUNTRACEDフラグを指定しない wait4呼び出しによって格納されていた場合には,以下のいずれかのマクロがゼロ以外の値に評価されます。

  • WIFEXITED(*status_value)

  • WIFSIGNALED(*status_value)

wait4関数は wait3関数に似ています。ただし, wait4関数は process_id 引数によって指定された特定の子プロセスを待ちます。resource_usage 引数は, <resource.h>ヘッダ・ファイルに定義されている子プロセスのリソース使用情報を含んだ位置をポイントします。

exit_exitも参照してください。


戻り値

0 成功を示します。停止または終了した子プロセスは存在せず, WNOHANG オプションが指定されています。
x 子プロセスの process_id。子プロセスの状態が取得可能です。
-1    エラーを示します。 errno は以下のいずれかの値に設定されます。

  • ECHILD---待機すべき子プロセスが存在しない。

  • EINTR---呼び出し元プロセスがキャッチしたシグナルの受信によって終了した。

  • EFAULT--- status_location または resource_usage 引数は,プロセスのアドレス空間の外の位置をポイントしている。

  • EINVAL--- options 引数の値が無効である。


目次 索引

印刷用画面へ
プライバシー 本サイト利用時の合意事項