プロセス制御と環境制御
更新 : 2007 年 11 月
プロセス制御ルーチンは、プログラムのプロセスの起動、停止、および管理に使用します。環境制御ルーチンは、オペレーティング システムの環境に関する情報の取得と変更に使用します。
プロセス制御関数と環境制御関数
ルーチン |
用途 |
同等の .NET Framework 関数 |
---|---|---|
バッファのフラッシュ、または atexit や _onexit によって登録された関数の呼び出しを実行することなく、プロセスを中止します。 |
適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
論理エラーをテストします。 |
||
デバッグ バージョンのランタイム ライブラリ専用であること以外は、assert と同じです。 |
||
プログラム終了時に実行するルーチンをスケジュールします。 |
||
Windows オペレーティング システムのプロセスで、スレッドを新規に作成します。 |
||
exit 終了プロシージャ (バッファのフラッシュなど) の実行後、プロセスを終了せずに、呼び出し元のプログラムに制御を返します。 |
||
_exit 終了プロシージャの実行後、プロセスを終了せずに、呼び出し側のプログラムに制御を返します。 |
||
ほかのプロセスが終了するまで待機します。 |
||
Windows オペレーティング システムのスレッドを終了します。 |
適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
引数リストを使用して、新しいプロセスを実行します。 |
System::Diagnostics::Process Class、System::Diagnostics::ProcessStartInfo Class |
|
引数リストと指定された環境を使用して、新しいプロセスを実行します。 |
System::Diagnostics::Process Class、System::Diagnostics::ProcessStartInfo Class |
|
PATH 変数と引数リストを使用して、新しいプロセスを実行します。 |
System::Diagnostics::Process Class、System::Diagnostics::ProcessStartInfo Class |
|
PATH 変数、指定された環境、および引数リストを使用して、新しいプロセスを実行します。 |
System::Diagnostics::Process Class、System::Diagnostics::ProcessStartInfo Class |
|
引数の配列を使用して、新しいプロセスを実行します。 |
System::Diagnostics::Process Class、System::Diagnostics::ProcessStartInfo Class |
|
引数の配列と指定された環境を使用して、新しいプロセスを実行します。 |
System::Diagnostics::Process Class、System::Diagnostics::ProcessStartInfo Class |
|
PATH 変数および引数の配列を使用して、新しいプロセスを実行します。 |
System::Diagnostics::Process Class、System::Diagnostics::ProcessStartInfo Class |
|
PATH 変数、指定された環境、および引数の配列を使用して、新しいプロセスを実行します。 |
System::Diagnostics::Process Class、System::Diagnostics::ProcessStartInfo Class |
|
atexit および _onexit によって登録された関数を呼び出し、すべてのバッファのフラッシュ後、開いているファイルをすべて閉じて、プロセスを終了します。 |
||
atexit や _onexit の呼び出し、またはバッファのフラッシュを行わずに、プロセスをすぐに終了します。 |
||
環境変数の値を取得します。 |
||
プロセス ID 番号を取得します。 |
||
保存したスタック環境を復元します。ローカルでないgoto の実行に使用します。 |
適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
プログラム終了時に実行するルーチンをスケジュールします。Microsoft C/C++ Version 7.0 以前のバージョンとの互換性のために使用します。 |
||
新しいコマンド プロセッサの終了まで待機してから、関連付けられているパイプのストリームを閉じます。 |
適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
エラー メッセージを出力します。 |
適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
読み込みおよび書き込み用にパイプを作成します。 |
適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
パイプを作成してコマンドを実行します。 |
適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
環境変数の値を追加または変更します。 |
適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
呼び出し側のプロセスにシグナルを送信します。 |
適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
スタック環境を保存します。ローカルではない goto の実行に使用します。 |
適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
割り込みシグナルを処理します。 |
適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。 |
|
指定された引数リストを使用して、新しいプロセスを作成し、実行します。 |
System::Diagnostics::Process Class、System::Diagnostics::ProcessStartInfo Class |
|
指定された引数リストと環境を使用して、新しいプロセスを作成し、実行します。 |
System::Diagnostics::Process Class、System::Diagnostics::ProcessStartInfo Class |
|
PATH 変数および指定された引数リストを使用して、新しいプロセスを作成し、実行します。 |
System::Diagnostics::Process Class、System::Diagnostics::ProcessStartInfo Class |
|
PATH 変数、指定された環境、および引数リストを使用して、新しいプロセスを作成し、実行します。 |
System::Diagnostics::Process Class、System::Diagnostics::ProcessStartInfo Class |
|
指定された引数の配列を使用して、新しいプロセスを作成し、実行します。 |
System::Diagnostics::Process Class、System::Diagnostics::ProcessStartInfo Class |
|
指定された環境と引数の配列を使用して、新しいプロセスを作成し、実行します。 |
System::Diagnostics::Process Class、System::Diagnostics::ProcessStartInfo Class |
|
PATH 変数および指定された引数の配列を使用して、新しいプロセスを作成し、実行します。 |
System::Diagnostics::Process Class、System::Diagnostics::ProcessStartInfo Class |
|
PATH 変数、指定された環境、および引数の配列を使用して、新しいプロセスを作成し、実行します。 |
System::Diagnostics::Process Class、System::Diagnostics::ProcessStartInfo Class |
|
オペレーティング システム コマンドを実行します。 |
System::Diagnostics::ProcessStartInfo Class、System::Diagnostics::Process Class |
Windows オペレーティング システムでは、生成された子プロセスは親プロセスと同じです。すべてのプロセスは、プロセス ID がわかっている別のプロセスの終了を待機するために、_cwait を使用できます。
_exec 系関数と _spawn 系関数は、_spawn 関数が新しいプロセスから呼び出し元のプロセスに制御を戻すことができる点で異なります。_spawn 関数では、_P_OVERLAY が指定されない限り、呼び出し元のプロセスと新しいプロセスの両方がメモリに存在します。_exec 関数では、新しいプロセスは呼び出し元のプロセスをオーバーレイするため、新しいプロセスの実行開始時にエラーが発生しない限り、呼び出し元のプロセスに制御を戻すことはできません。
_exec 系関数および _spawn 系関数におけるそれぞれの関数の違いは、次の表に示すように、新しいプロセスとして実行するファイルを検索する方法、新しいプロセスに渡される引数の形式、および環境の設定方法にあります。引数の数が一定か、コンパイル時に既知である場合には、引数リストを渡す関数を使用します。引数を格納する配列へのポインタを渡す関数は、引数の個数が実行時に決定される場合に使用します。次の表の内容は、_spawn 系関数および _exec 系関数のワイド文字バージョンにも当てはまります。
_spawn 系関数と _exec 系関数
関数 |
ファイルの検索に PATH 変数を使用するかどうか |
引数を渡す形式 |
環境の設定 |
---|---|---|---|
_execl, _spawnl |
× |
リスト |
呼び出し元のプロセスから継承する。 |
_execle, _spawnle |
× |
リスト |
子プロセス用の環境テーブルへのポインタが最後の引数として渡される。 |
_execlp, _spawnlp |
○ |
リスト |
呼び出し元のプロセスから継承する。 |
_execlpe, _spawnlpe |
○ |
リスト |
子プロセス用の環境テーブルへのポインタが最後の引数として渡される。 |
_execv, _spawnv |
× |
配列 |
呼び出し元のプロセスから継承する。 |
_execve, _spawnve |
× |
配列 |
子プロセス用の環境テーブルへのポインタが最後の引数として渡される。 |
_execvp, _spawnvp |
○ |
配列 |
呼び出し元のプロセスから継承する。 |
_execvpe, _spawnvpe |
○ |
配列 |
子プロセス用の環境テーブルへのポインタが最後の引数として渡される。 |