マルチスレッドのプログラミング

プロセスの作成 − exec(2) と exit(2) について

システムコール exec(2)exit(2) の動作は、アドレス空間内のすべてのスレッドを削除する点を除いて、シングルスレッドのプロセスの場合と変わりません。どちらのシステムコールも、スレッドを含むすべての実行リソースが削除されるまでブロック状態になります。

exec() は、プロセスを再構築するときに LWP を 1 つ生成します。さらにプロセス起動時に初期スレッドを生成します。通常、初期スレッドが処理を終えると exit() を呼び出し、プロセスは削除されます。

プロセス内のすべてのスレッドが終了すると、そのプロセスも終了します。複数のスレッドをもつプロセスから exec() 関数が呼び出されると、すべてのスレッドが終了し、新しい実行可能イメージがロードされ実行されます。デストラクタ関数は呼び出されません。