EXIT(2)

名称
_exit - 呼び出し元プロセスを終了する

ライブラリ
libc

書式
<unistd.h> void _exit(int status)

解説
_exit() システムコールはプロセスを終了させ、以降のような結果をもたらします:

•   呼び出し元プロセス内のすべての記述子が閉じられます。 これには遅延が伴うことがあります。 たとえば、出力がすべて出されてしまうのを待機することです。 この状態のプロセスは既に死にかけているので、新たに kill はできません。

•   呼び出し元プロセスの親プロセスに、未解決の wait(2) 呼び出しがある場合または SIGCHLD シグナルを捕捉した場合、呼び出し元プロセスの終了が親プロセスに通知され、 wait(2) で定義されたように status が設定されます。

•   呼び出し元プロセスに子プロセスが存在するなら、それらすべての子プロセスの 親プロセス ID は 1 に設定されます。 初期化プロセス (intro(2) の 定義 セクションを参照) が、これらの各プロセスを継承します。

•   プロセスの終了によっていずれかのプロセスグループが親のない子になる場合 (通常はグループのメンバ全員に対する親が終了したため。 intro(2) の “親のないプロセスグループ (Orphaned Process Group)” を参照)、そして親のないグループのメンバのいずれかが停止されている場合、 その新たな親のないプロセスグループのすべてのメンバに SIGHUP シグナルと SIGCONT シグナルが送信されます。

•   プロセスが制御プロセスの場合 (intro(2) を参照)、 SIGHUP シグナルが制御端末のフォアグラウンドプロセスグループに送信され、 制御端末への現在のすべてのアクセスが無効にされます。

ほとんどの C プログラムはライブラリルーチン exit(3) を呼び出します。 これはバッファをフラッシュし、ストリームを閉じ、 一時ファイルをアンリンクするなどした後に _exit() を呼び出します。

戻り値
_exit() システムコールは決して戻りません。

関連項目
fork(2), sigaction(2), wait(2), exit(3)

規格
_exit() システムコールは p1003.1-90 に適合しています。

歴史
_exit() 関数は AT&T UNIX で登場しました。