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++ |
|---|---|---|---|
|
+ |