EXIT(2) |
FreeBSD System Calls Manual |
EXIT(2) |
名称
_exit —
呼び出しているプロセスを終了する
ライブラリ
Standard C Library (libc, -lc)
書式
#include < unistd.h>
void
_exit( int status);
解説
_exit() システムコールはプロセスを終了させ、以降のような結果をもたらします:
- 呼び出し元プロセス内のオープンされたすべての記述子はクローズされます。これには遅延が伴うことがあります。たとえば、出力がすべて出されてしまうのを待機することです。この状態のプロセスは既に死にかけているので、新たに kill はできません。
- 呼び出し元プロセスの親プロセスに、未解決の wait(2) 呼び出しがある場合または SIGCHLD シグナルを捕捉した場合、呼び出し元プロセスの終了が親プロセスに通知され、 wait(2) で定義されたように status が設定されます。
- 呼び出し元プロセスに子プロセスが存在するなら、それらすべての子プロセスの親プロセス ID は 1 に設定されます。初期化プロセスは、これらの各プロセスを継承します ( init(8) と intro(2) の 定義 セクションを参照)。
- プロセスの終了によっていずれかのプロセスグループが親のない子になる場合 (通常はグループのメンバ全員に対する親が終了したため。 intro(2) の“親のないプロセスグループ (Orphaned Process Group)”を参照)、そして親のないグループのメンバのいずれかが停止されている場合、その新たな親のないプロセスグループのすべてのメンバに SIGHUP シグナルと SIGCONT シグナルが送信されます。
- プロセスが制御プロセスの場合 ( intro(2) を参照)、 SIGHUP シグナルが制御端末のフォアグラウンドプロセスグループに送信され、制御端末への現在のすべてのアクセスが無効にされます。
ほとんどの C プログラムはライブラリルーチン exit(3) を呼び出します。これはバッファをフラッシュし、ストリームをクローズし、一時ファイルをアンリンクするなどした後に _exit() を呼び出します。
戻り値
_exit() システムコールは、決して返りません。
規格
_exit() システムコールは、 IEEE Std 1003.1-1990 (“POSIX.1”) に適合するはずです。
歴史
_exit() 関数は、 Version 7 AT&T UNIX で登場しました。