HOME > Linux Tips ( 目次 ) > Linux コマンド 一覧表 > e > exit - ライブラリコールの説明

exit - ライブラリコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 返り値
  5. 準拠
  6. 注意
  7. 関連項目

名前

exit - プロセスの正常終了

書式

#include <stdlib.h>

void exit(int status);

説明

exit () 関数は、プロセスを正常に終了させ、 status & 0377 という値を親プロセスへ返す ( wait (2)を参照)。

atexit () や on_exit () によって 登録された全ての関数は、それらが登録された順番と逆順にコールされる。 (登録された関数の中で atexit () or on_exit () を使って exit 処理中に実行される追加の関数を登録することができる; 新規に登録された関数は、この後で実行される関数リストの先頭に 追加される。)

オープン中のストリームは全てフラッシュされて、クローズされる。 tmpfile () によって作成されたファイルは削除される。

C 標準では EXIT_SUCCESSEXIT_FAILURE という 2つの定数が 定義されている。それぞれ正常終了と異常終了を示すもので、 exit () に渡すことができる。

返り値

exit () 関数は返らない。

準拠

SVr4, 4.3BSD, POSIX.1-2001.

注意

atexit () や on_exit () を使って登録された関数の中で exit () か longjmp () が呼び出された場合、 何が起こるかは未定義である。

EXIT_SUCCESS と EXIT_FAILURE を使うと、 0 と非 0 (1 や -1) を使うのに比べて (Unix 以外の環境に) 移植するのがいくらか簡単になる。 特に VMS は別の方式を用いている。

BSD は終了コードを標準化しようとしている; <sysexits.h> を参照すること。

exit () の後、親プロセスに終了ステータスが渡されなければならない。 終了ステータスの渡し方には 3 つの場合がある。 親プロセスが SA_NOCLDWAIT を設定した場合、 または SIGCHLD ハンドラを SIG_IGN に設定した場合、 ステータスは破棄される。 親プロセスが子プロセスの終了を待っている場合、 親プロセスに終了ステータスが伝えられる。 どちらの場合でも exit のプロセスは直ちに終了する。 「終了ステータスを関知せず終了も待たない」 ということを親プロセスが指示していない場合、 exit プロセスは (終了ステータスを表す 1 バイトのみを保持する) 「ゾンビ」プロセスになる。 これにより、後から wait () 関数を呼び出すことで、 親プロセスは終了ステータスを知ることができる。

SIGCHLD シグナルのサポートが実装されている場合、 このシグナルは親プロセスに送られる。 親プロセスが SA_NOCLDWAIT を設定した場合、 SIGCHLD シグナルが送られるかどうかは定義されていない。

そのプロセスがセッションのリーダーで、 そのプロセスの制御端末がそのセッションの制御端末である場合、 この制御端末のフォアグラウンドプロセスグループにある 各プロセスに SIGHUP シグナルが送られ、 端末がセッションから切り離される。 これにより新しい制御プロセスを取得することができる。

プロセスが終了することにより、プロセスグループが孤立して、 そのグループのメンバーのうちのどれかが停止した場合、 プロセスグループの各プロセスに対して SIGHUP シグナルが送られ、続いて SIGCONT シグナルが送られる。

関連項目

Linux Tips 関連記事
Linux Tips(目次)
Linux ディストリビューション一覧
rpm のファイル名にあるi386とかi686とは
自分のマシンの情報を調べる
cron の設定
ssh の root ログインを禁止する
ssh を、ユーザ、IPでアクセス制限
鍵交換方式によるssh接続
鍵交換方式によるssh接続( windowsから )
複数ファイル内の文字列を置換して上書き保存する
あるグループをイニシャルグループとするユーザー一覧出力
複数ファイルのファイル名を一括変換する
連番ファイルをコマンド一発で作成する
中身がランダムなファイルを任意のサイズで作成する
Linux ユーザーアカウントをロック・アンロックする