次表にプロセス制御ルーチンを示します。これらのルーチンは,プロセスまたは副プロセスの動作を制御します。SLEEP または ALARM を使うと,副プロセスが完了するのを待ち,その進捗をモニタして,KILL を介してシグナルを送り,ABORT を使ってその実行を停止することができます。
その名前とは異なり,KILL は必ずしもプログラムの実行を停止するわけではありません。その代わりに,シグナルを受け取るルーチンに,シグナルを確認し,渡されたコードに応じて適切な動作を実行するハンドラ・ルーチンを用意することができます。
可搬用ルーチン | 説明 |
ABORT | 現在のプロセスの実行を停止し,I/O バッファをクリアし,外部装置 0 に文字列を書き込みます。 |
ALARM | 指定された秒数だけ待った後に,外部サブルーチンを実行します。 |
KILL | 特定のプロセス ID にシグナル・コードを送ります。 |
SIGNAL | シグナルに対する動作を変更します。 |
SLEEP | 指定された秒数だけプログラムの実行を中断します。 |
SYSTEM | コマンドを別のシェルで実行します。 |
SYSTEM を使用すると,コマンドは別のシェル中で実行されることに注意してくだい。SYSTEM ルーチンで設定された,現在の作業用ディレクトリや環境変数などの基本設定は,呼び出し側プログラムが実行されている環境には影響を与えません。
この可搬用ライブラリーには FORK ルーチンは含まれていません。U*X システムでは,FORK は親プロセスの複製実行形式ファイルを作成します。子プロセスと親プロセスはそれぞれ独自のリソースのコピーを持ち,互いに独立した存在になります。Windows オペレーティング・システムでは,子プロセス (スレッドと呼ばれるもの) を作成することはできますが,親プロセスと子プロセスの両方が同じアドレス空間を共有し,システム・リソースを共有します。別のプロセスを作成する必要がある場合,Win32 API を通して CreateProcess 呼び出しを使用してください。
スレッドの実装方法については,「マルチスレッド・アプリケーションの作成」を参照してください。