2017年11月20日
《その143》 atexit関数,abort関数 と exit関数
abort関数 と exit関数
abort関数
・強制的にプログラムを中断して終了させます。その際に、通常の終了処理は行われません。
・abort関数の呼出しにより、プログラムの実行環境に失敗終了状態が返されます。
exit関数
・強制的にプログラムを中断して終了させまが、通常の終了処理が行われます。
・atexit関数による終了では、プログラムの実行環境に成功終了状態が返されます。
・引数は、0 〜 255 までの値にします。引数に 0 以外の値を与えた場合は、終了処理は行わ
れますが、プログラムの実行環境に失敗終了状態が返されます。
また、引数としてマクロ EXIT_SUCCESS または EXIT_FAILURE を使うこともできます。
EXIT_SUCCESS の値は 0、EXIT_FAILURE の値は 8 と定義 されています。
atexit関数
ヘッダ #include <cstdlib>
int atexit(void func(void));
・プログラムが成功終了するときの、終了時に実行したい関数を登録します。引数として与え
た「関数へのポインタが指す関数」の実行を、終了処理に登録します。
・atexit関数を使用して登録された関数は、登録とは逆順に呼び出されます。
次のプログラムで、関数 end1, end2, end3 は、atexit関数を用いて登録した順序の逆の順序で呼び出されます。
また、
cout << "終了します(2)。\n";
が実行されることはありません。
// ------------------------------------
#include <cstdlib>
#include <iostream>
using namespace std;
void end1() {
cout << "end1\n";
}
void end3() {
cout << "end3\n";
}
void end2() {
cout << "end2\n";
}
int main() {
int y;
cout << "\"0\"…abort \"1\"…exit : "; cin >> y;
cout << "終了します(1)。\n";
atexit(end3);
atexit(end2);
atexit(end1);
if (y)
exit(0);
else
abort();
cout << "終了します(2)。\n";
}
// ------------------------------------
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/6988503
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック