C++ の exit(1)
この記事では、C++ で exit()
関数を使用する方法について説明します。
ステータスコードで exit
関数を使用して C++ プログラムを終了する
実行中のプログラムは、一般にオペレーティングシステムではプロセスと呼ばれ、さまざまな状態として表されるライフサイクルがあります。Web サーバーのような実行時間の長いプログラムもありますが、状況によっては、またはユーザーのシグナルを配信することによって、それらのプログラムを終了する必要があります。プロセスの終了は、C 標準の一部で C++ に含まれている exit()
関数を使用して呼び出すことができます。子が待機している場合に親プロセスから読み取ることができるプログラム終了ステータスを指定する 1つの整数引数を取ります。
成功したリターンステータスコードの従来の値は 0
であり、ゼロ以外はエラーコードと見なされます。これは、事前定義されたシナリオに対応している可能性があります。exit
呼び出しに渡される対応する終了コードを示すために、EXIT_SUCCESS
および EXIT_FAILURE
と呼ばれる 2つのマクロ式があることに注意してください。通常、プログラムには複数のファイルストリームと一時ファイルが開いており、exit
が呼び出されると自動的に閉じられるか削除されます。
#include <unistd.h>
#include <iostream>
using std::cout;
using std::endl;
int main() {
printf("Executing the program...\n");
sleep(3);
exit(0);
// exit(EXIT_SUCCESS);
}
出力:
Executing the program...
障害ステータスコードで exit(1)
を使用して C++ プログラムを終了する
引数値が 1
の exit
関数は、失敗した終了を示すために使用されます。成功した呼び出しステータスコードの値を返す一部の関数は、戻り値を検証し、エラーが発生した場合にプログラムを終了する条件ステートメントと組み合わせることができます。exit(1)
は exit(EXIT_FAILURE)
を呼び出すのと同じであることに注意してください。
#include <unistd.h>
#include <iostream>
using std::cout;
using std::endl;
int main() {
if (getchar() == EOF) {
perror("getline");
exit(EXIT_FAILURE);
}
cout << "Executing the program..." << endl;
sleep(3);
exit(1);
// exit(EXIT_SUCCESS);
}
出力:
Executing the program...
exit()
関数のもう 1つの便利な機能は、プログラムが最終的に終了する前に、特別に登録された関数を実行することです。これらの関数は通常の関数として定義でき、終了時に呼び出すには、atexit
関数に登録する必要があります。atexit
は標準ライブラリの一部であり、唯一の引数として関数ポインタを取ります。複数の atexit
呼び出しを使用して複数の関数を登録でき、exit
が実行されると、それぞれが逆の順序で呼び出されることに注意してください。
#include <unistd.h>
#include <iostream>
using std::cout;
using std::endl;
static void at_exit_func() { cout << "at_exit_func called" << endl; }
static void at_exit_func2() { cout << "at_exit_func called" << endl; }
int main() {
if (atexit(at_exit_func) != 0) {
perror("atexit");
exit(EXIT_FAILURE);
}
if (atexit(at_exit_func2) != 0) {
perror("atexit");
exit(EXIT_FAILURE);
}
cout << "Executing the program..." << endl;
sleep(3);
exit(EXIT_SUCCESS);
}
出力:
Executing the program...
at_exit_func2 called
at_exit_func called