atexit - ライブラリコールの説明 - Linux コマンド集 一覧表
名前
atexit - プロセスが正常終了した時に呼び出される関数を登録する
書式
#include <stdlib.h>
int atexit(void (*function)(void));
説明
atexit () 関数は、与えられた function を、 exit (3) やプログラムの main () 関数からの返りを通じて、プロセスが正常終了した時に呼び出される 関数として登録する。 ここで定義された関数は、登録した順番とは逆の順番で呼び出される。 登録した関数に引き数は渡されない。
POSIX.1-2001 では、このような関数を少なくとも ATEXIT_MAX 個 (32個) 登録できる ことを要求している。その実装でサポートされている実際の上限は sysconf (3) を使って取得できる。
fork ()で作成された場合、子プロセスは親プロセスの登録のコピーを継承する。 exec ()ファミリーの関数のいずれかの呼び出しに成功すると、 全ての登録が削除される。
返り値
atexit () 関数は、関数登録が成功した時には 0 を返す。 その他の場合には 0 以外の値を返す。
例
#include <stdio.h> #include <stdlib.h> #include <unistd.h>
void bye(void) { printf("That was all, folks\n"); }
int main(){ long a; int i;
a = sysconf(_SC_ATEXIT_MAX); printf("ATEXIT_MAX = %ld\n", a);
i = atexit(bye); if (i != 0) { fprintf(stderr, "cannot set exit function\n"); return EXIT_FAILURE; } return EXIT_SUCCESS; }
NOTES
glibc 2.2.3 以降では、共有ライブラリがアンロードされるときに呼ばれる 関数を登録するために、共有ライブラリの中で atexit () (と on_exit ()) を使用することができる。
atexit () (と on_exit ())を使って登録された関数は、 シグナルの配送によりプロセスが異常終了した場合には呼び出されない。
準拠
SVr4, 4.3BSD, C89, C99, POSIX.1-2001.
関連項目
_exit
(3),
exit
(3),
on_exit
(3)