「quick exitによるプログラムの終了処理」の版間の差分
提供: C言語入門
(ページの作成:「プログラムを終了する前に、プログラムでクリーンアップしておくべき処理を実行する必要があるとき、at_quick_exit()で終了処...」) |
(相違点なし)
|
2014年3月30日 (日) 00:44時点における版
プログラムを終了する前に、プログラムでクリーンアップしておくべき処理を実行する必要があるとき、at_quick_exit()で終了処理を追加しておき、プログラムを終了しなければならないときに、quick_exit()を呼び出すことで、クリーンアップを行ってからプログラムを終了できます。
読み方
- quick_exit
- くいっく いくじっと
- at_quick_exit
- あっと くいっく いくじっと
概要
quick_exitは、C11で追加されました。libcとして提供されています。 似たような機能として、atexit()があります。
at_quick_exit()は、quick_exit()が呼び出されたときに、実行する関数を登録するための関数です。 quick_exit()は、exit()の代わりに使う関数で、at_quick_exit()で登録された関数を実行し、quic_exit()の引数で渡された値でプログラムを終了します。
ヘッダファイル
#include <stdlib.h>
ソースコード
/* * quick_exit.c * Copyright (C) 2014 kaoru <kaoru@bsd> */ #include <stdio.h> #include <stdlib.h> #include <err.h> void cleanup(void) { (void)puts("cleanup"); } int main(int argc, char *argv[]) { int r = at_quick_exit(cleanup); if (0 != r) { err(EXIT_FAILURE, "can not register cleanup function"); } quick_exit(EXIT_FAILURE); // NOTREACHED exit(EXIT_SUCCESS); }
コンパイル
cc quick_exit.c
実行例
$ ./a.out cleanup [2] 3491 exit 1 ./a.out
関連項目
- プログラムの終了とステータス
- quick_exitによるプログラムの終了処理
- atexitによるプログラムの終了処理