プロセス制御と環境制御

プログラム内からプロセスを開始、停止、および管理するには、プロセス制御ルーチンを使用します。 オペレーティング システム環境に関する情報を取得および変更するには、環境制御ルーチンを使用します。

プロセスおよび環境制御関数

ルーチンによって返される値 使用
abort バッファーをフラッシュしたり、atexit および _onexit によって登録された関数を呼び出したりせずにプロセスを中止する
assert 論理エラーのテスト
_ASSERT_ASSERTE マクロ assert に類似。ただしランタイム ライブラリのデバッグ バージョンでのみ使用できる
atexit プログラムの終了時に実行されるルーチンをスケジュールする
_beginthread, _beginthreadex Windows オペレーティング システムのプロセスで新しいスレッドを作成する
_cexit exit の終了処理 (バッファーのフラッシュなど) を実行し、プロセスを終了せずに呼び出し元のプログラムに制御を戻す
_c_exit _exit の終了処理を実行し、プロセスを終了せずに呼び出し元のプログラムに制御を戻す
_cwait 他のプロセスが終了するまで待機する
_endthread, _endthreadex Windows オペレーティング システムのスレッドを終了する
_execl, _wexecl 引数リストを含む新しいプロセスを実行する
_execle, _wexecle 引数リストおよび指定された環境を含む新しいプロセスを実行する
_execlp, _wexeclp PATH 変数および引数リストを使用して新しいプロセスを実行する
_execlpe, _wexeclpe PATH 変数、指定された環境、および引数リストを使用して新しいプロセスを実行する
_execv, _wexecv 引数配列を含む新しいプロセスを実行する
_execve, _wexecve 引数配列および指定された環境を含む新しいプロセスを実行する
_execvp, _wexecvp PATH 変数および引数配列を使用して新しいプロセスを実行する
_execvpe, _wexecvpe PATH 変数、指定された環境、および引数配列を使用して新しいプロセスを実行する
exit atexit および _onexit によって登録された関数の呼び出し、すべてのバッファーのフラッシュ、開いているすべてのファイルを閉じ、プロセスの終了を行う
_exit atexit または _onexit の呼び出し、またはバッファーのフラッシュを行わずに直ちにプロセスを終了する
getenv, _wgetenv, getenv_s, _wgetenv_s 環境変数の値を取得する
_getpid プロセス ID 番号を取得する
longjmp 保存したスタック環境を復元し、これを非ローカルの goto の実行に使用する
_onexit プログラムの終了時に実行されるルーチンをスケジュールする (Microsoft C/C++ version 7.0 以前のバージョンとの互換性のために使用)
_pclose 新しいコマンド プロセッサを待機し、関連するパイプのストリームを閉じる
perror, _wperror エラー メッセージを出力する
_pipe 読み取りおよび書き込み用のパイプを作成する
_popen, _wpopen パイプを作成し、コマンドを実行する
_putenv, _wputenv, _putenv_s, _wputenv_s 環境変数の値を追加または変更する
raise 呼び出し元のプロセスにシグナルを送る
setjmp スタック環境を保存し、非ローカルの goto の実行に使用する
signal 割り込みシグナルを処理する
_spawnl, _wspawnl 指定した引数リストを含む新しいプロセスを作成して実行する
_spawnle, _wspawnle 指定した引数リストおよび環境を含む新しいプロセスを作成して実行する
_spawnlp, _wspawnlp PATH 変数および指定した引数リストを含む新しいプロセスを作成して実行する
_spawnlpe, _wspawnlpe PATH 変数、指定した環境および引数リストを含む新しいプロセスを作成して実行する
_spawnv, _wspawnv 指定した引数配列を含む新しいプロセスを作成して実行する
_spawnve, _wspawnve 指定した環境および引数配列を含む新しいプロセスを作成して実行する
_spawnvp, _wspawnvp PATH 変数および指定した引数配列を含む新しいプロセスを作成して実行する
_spawnvpe, _wspawnvpe PATH 変数、指定した環境および引数配列を含む新しいプロセスを作成して実行する
system, _wsystem オペレーティング システム コマンドを実行する

Windows オペレーティング システムでは、起動されたプロセスは、起動元のプロセスと同じです。 どのプロセスでも、_cwait を使用してプロセス ID がわかっている、他のすべてのプロセスを待機することができます。

_exec ファミリと _spawn ファミリの違いは、_spawn 関数の場合、新しいプロセスから呼び出し元のプロセスにコントロールを戻すことができることです。 _spawn 関数では、_P_OVERLAY が指定されていなければ、呼び出し元のプロセスも新しいプロセスもメモリに存在します。 _exec関数では、新しいプロセスによって呼び出しプロセスがオーバーレイされるため、新しいプロセスの実行を開始しようとしてエラーが発生しない限り、制御は呼び出し元のプロセスに戻ることはできません。

関数と_spawnファミリの_exec関数の違いには、次の表に示すように、新しいプロセスとして実行するファイルを検索する方法、新しいプロセスに引数が渡される形式、環境を設定する方法が含まれます。 引数の数が定数の場合、またはコンパイル時に認識される場合は、引数リストを渡す関数を使用します。 引数の数が実行時に決定される場合は、引数が含まれる配列にポインターを渡す関数を使用します。 次の表の情報は、_spawn および _exec 関数のワイド文字バージョンにも適用されます。

_spawn および _exec 系の関数

関数 PATH 変数を使用してファイルを検索する 引数渡し規約 環境設定
_execl, _spawnl いいえ リスト 呼び出し元プロセスから継承
_execle, _spawnle いいえ リスト 最後の引数として渡された新しいプロセスの環境のテーブルへのポインター
_execlp, _spawnlp はい 一覧取得 呼び出し元プロセスから継承
_execvpe, _spawnvpe はい Array 最後の引数として渡された新しいプロセスの環境のテーブルへのポインター
_execlpe, _spawnlpe はい 一覧取得 最後の引数として渡された新しいプロセスの環境のテーブルへのポインター
_execv, _spawnv いいえ Array 呼び出し元プロセスから継承
_execve, _spawnve いいえ Array 最後の引数として渡された新しいプロセスの環境のテーブルへのポインター
_execvp, _spawnvp はい Array 呼び出し元プロセスから継承

関連項目

カテゴリ別ユニバーサル C ランタイム ルーチン