cwait
process.h:インデックス への移動
ヘッダー ファイル
process.h
カテゴリ
プロセス制御ルーチン
プロトタイプ
int cwait(int *statloc, int pid, int action);
説明
子プロセスが終了するのを待ちます。
cwait 関数は、指定された子プロセスが終了するのを待ちます。 待つ対象の子プロセスの ID が pid です。 statloc が NULL でない場合、statloc は、cwait が GETEXITCODEPROCESS から返された終了ステータスを格納する場所を指します。
pid が 0 の場合、cwait はいずれかの子プロセスが終了するのを待ちます。 0 以外の場合、pid には終了を待つ対象プロセスのプロセス ID を指定します。この値は、事前に非同期の spawn 関数を呼び出して取得したものでなければなりません。
action に指定できる値(WAIT_CHILD および WAIT_GRANDCHILD)は、互換性のためにサポートされているだけなので、コンパイラに無視され、cwait は単に pid で参照されているプロセスの終了を待ちます。 この 2 つの値は process.h で定義されています。
戻り値
- 子プロセスが正常終了して cwait から戻る場合には、子プロセスのプロセス ID が返されます。
- 子プロセスが異常終了して cwait から戻る場合には、親に -1 が返され、errno が EINTR(子プロセスが異常終了しました)に設定されます。
- 子プロセスが完了しないのに cwait から戻る場合には、-1 の値が返され、errno が以下のいずれかの値に設定されます。
ECHILD |
子が存在しないか、pid の値が無効です |
EINVAL |
action に無効な値が指定されました |
例
#include <process.h> #include <stdio.h> int spawn_and_wait(wchar_t* program) { /* Spawn another process with NOWAIT flag */ int pid = _wspawnl(P_NOWAIT, program, NULL); int exitCode; /* Check for error */ if (pid == -1) return -1; /* Wait for the application to finish */ cwait(&exitCode, pid, 0); return exitCode; }
移植性
POSIX | Win32 | ANSI C | ANSI C++ |
---|---|---|---|
+ |