この関数の目的
exit()は、プログラムの実行を終了する。
定義>
#include <stdlib.h> void exit(int status);
働き>
この関数はプログラムの正常終了を引き起こす。2度以上 exit() が呼ばれた場合の動作は未定義である。
まず、全ての atexit() によって登録された関数が、登録されたのとは逆の順番で実行される。
次に、全ての書かれていないバッファにためられたデータをもつ開いたストリームはフラッシュされ、 全ての開いたストリームは閉じられ、 tmpfile() によって作られた一時ファイルは削除される。
最後に、制御は実行環境に帰る。 status の値がゼロか EXIT_SUCCESS
であれば、処理系定義の「成功裡の終了」状態が返される。
EXIT_FAILURE
であれば、処理系定義の「非成功裡の終了」状態が返される。
他の場合の返される状態は処理系定義である。
この関数は、呼び出し元に戻ることは無い。
解説
abort() との違いは、 atexit() で登録した関数が呼び出されることと、 ストリームの後始末をつけることが保証されているという点だ。
Unix およびそれを部分的に真似した OS では、プログラムが実行を終了するときに、リターンコードといわれる整数を返す。
これは C のプログラムであれば main 関数の返り値か、この exit 関数の引数となる。
例えば、 make と呼ばれるユーティリティーは、プログラムを実行し、
リターンコードがゼロでない場合はエラーとみなして処理を中止するようになっている。
また、 DOS/Windows で使われるバッチファイルの条件文(if errorlevel
)でもこのリターンコードが参照される。