プロセス制御と環境制御
プログラム内からプロセスを開始、停止、および管理するには、プロセス制御ルーチンを使用します。 オペレーティング システム環境に関する情報を取得および変更するには、環境制御ルーチンを使用します。
プロセスおよび環境制御関数
ルーチンによって返される値 | 使用 |
---|---|
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
関数では、新しいプロセスによって呼び出しプロセスがオーバーレイされるため、新しいプロセスの実行を開始しようとしたときにエラーが発生しない限り、制御は呼び出し元のプロセスに戻ることはできません。
_exec
ファミリと_spawn
ファミリの関数の違いには、次の表に示すように、新しいプロセスとして実行されるファイルを検索する方法、新しいプロセスに引数が渡される形式、環境を設定する方法が含まれます。 引数の数が定数の場合、またはコンパイル時に認識される場合は、引数リストを渡す関数を使用します。 引数の数が実行時に決定される場合は、引数が含まれる配列にポインターを渡す関数を使用します。 次の表の情報は、_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 | 呼び出し元プロセスから継承 |