cwait

提供: RAD Studio
移動先: 案内検索

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

+