arrow 若葉プログラミング塾 > 知識の玉手箱 > C関数リファレンス >
exit()
exit()

この関数の目的

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)でもこのリターンコードが参照される。

arrow 若葉プログラミング塾 > 知識の玉手箱 > C関数リファレンス >
KC