ATEXIT(3) | Linux Programmer's Manual | ATEXIT(3) |
名前
atexit -プロセスが正常終了した時に呼び出される関数を登録する書式
#include <stdlib.h>
int atexit(void (* function )(void));
説明
atexit() 関数は、与えられた function を、 exit(3) やプログラムの main() 関数からの返りを通じて、プロセスが正常終了した時に呼び出される関数として登録する。ここで定義された関数は、登録した順番とは逆の順番で呼び出される。登録した関数に引き数は渡されない。POSIX.1-2001 では、このような関数を少なくとも ATEXIT_MAX 個 (32個) 登録できることを要求している。その実装でサポートされている実際の上限は sysconf(3) を使って取得できる。
fork(2) で作成された場合、子プロセスは親プロセスの登録のコピーを継承する。 exec(3) ファミリーの関数の場合、呼び出しに成功すると、全ての登録が削除される。
返り値
atexit() 関数は、関数登録が成功した時には 0 を返す。その他の場合には 0 以外の値を返す。準拠
SVr4, 4.3BSD, C89, C99, POSIX.1-2001.注意
atexit() (と on_exit(3)) を使って登録された関数は、シグナルの配送によりプロセスが異常終了した場合には呼び出されない。Linux での注意
glibc 2.2.3 以降では、共有ライブラリがアンロードされるときに呼ばれる関数を登録するために、共有ライブラリの中で atexit() (と on_exit(3)) を使用することができる。例
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void
bye(void)
{
printf("That was all, folks\n");
}
int
main(void)
{
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");
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
関連項目
_exit(2), exit(3), on_exit(3)この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.51 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2008-12-05 | Linux |