Man page - atexit(3)

Packages contains this manual

Available languages:

en fr pl cs ja ru ro de

Manual

ATEXIT

名 前
書 åŧ
čĒŦ 明
čŋ” り 値
åąž 性
æē– 拠
æŗ¨ 意
Linux で ぎ æŗ¨ 意
例
é–ĸ 逪 項 į›Ž
こ ぎ 文 書 ãĢ つ い ãĻ

名 前

atexit - プ ロ ã‚ģ ゚ が æ­Ŗ 常 įĩ‚ äē† ã— た 時 ãĢ å‘ŧ ãŗ å‡ē さ れ る é–ĸ 数 を į™ģ 錞 す る

書 åŧ

#include <stdlib.h>

int atexit(void (* function )(void));

čĒŦ 明

atexit () é–ĸ 数 は 、 与 え ら れ た function を 、 exit (3) や プ ロ グ ナ ム ぎ main () é–ĸ 数 か ら ぎ čŋ” り を 通 じ ãĻ 、 プ ロ ã‚ģ ゚ が æ­Ŗ 常 įĩ‚ äē† ã— た 時 ãĢ å‘ŧ ãŗ å‡ē さ れ る é–ĸ 数 と し ãĻ į™ģ 錞 す る 。 こ こ で 厚 įžŠ さ れ た é–ĸ 数 は 、 į™ģ 錞 し た 順 į•Ē と は 逆 ぎ 順 į•Ē で å‘ŧ ãŗ å‡ē さ れ る 。 į™ģ 錞 し た é–ĸ 数 ãĢ åŧ• 数 は æ¸Ą さ れ ãĒ い 。

同 じ é–ĸ 数 を 複 数 回 į™ģ 錞 し ãĻ も よ い 。 į™ģ 錞 さ れ た é–ĸ 数 は į™ģ 錞 1 回 ãĢ つ き 1 回 å‘ŧ ãŗ å‡ē さ れ る 。

POSIX.1 で は 、 こ ぎ よ う ãĒ é–ĸ 数 を 少 ãĒ く と も ATEXIT_MAX 個 (32個 ) į™ģ 錞 で き る こ と を čρ æą‚ し ãĻ い る 。 そ ぎ 原 čŖ… で ã‚ĩ ポ ãƒŧ ト さ れ ãĻ い る 原 際 ぎ 上 限 は sysconf (3) を äŊŋ ãŖ ãĻ 取 åž— で き る 。

fork (2) で äŊœ 成 さ れ た å ´ 合 、 子 プ ロ ã‚ģ ゚ は čĻĒ ãƒ— ロ ã‚ģ ゚ ぎ į™ģ 錞 ぎ ã‚ŗ ピ ãƒŧ を įļ™ æ‰ŋ す る 。 exec (3) フ ã‚Ą ミ ãƒĒ ãƒŧ ぎ é–ĸ 数 ぎ å ´ 合 、 å‘ŧ ãŗ å‡ē し ãĢ 成 功 す る と 、 全 ãĻ ぎ į™ģ 錞 が 削 除 さ れ る 。

čŋ” り 値

atexit () é–ĸ 数 は 、 é–ĸ 数 į™ģ 錞 が 成 功 し た 時 ãĢ は 0 を čŋ” す 。 そ ぎ äģ– ãŽ å ´ 合 ãĢ は 0 äģĨ 外 ぎ 値 を čŋ” す 。

åąž 性

こ ぎ ᝀ で äŊŋ ᔍ さ れ ãĻ い る ᔍ čĒž ぎ čĒŦ 明 ãĢ つ い ãĻ は 、 attributes (7) を 参 į…§ 。

Image grohtml-19865-1.png

æē– 拠

POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.

æŗ¨ 意

atexit () (と on_exit (3)) を äŊŋ ãŖ ãĻ į™ģ 錞 さ れ た é–ĸ 数 は 、 ã‚ˇ グ ナ ãƒĢ ぎ 配 送 ãĢ よ り プ ロ ã‚ģ ゚ が į•° 常 įĩ‚ äē† ã— た å ´ 合 ãĢ は å‘ŧ ãŗ å‡ē さ れ ãĒ い 。

į™ģ 錞 さ れ た é–ĸ 数 ぎ 一 つ が _exit (2) を å‘ŧ ãŗ å‡ē し た å ´ 合 、 掋 り ぎ é–ĸ 数 は お れ も čĩˇ 動 さ れ ず 、 exit (3) ãĢ よ り 原 行 さ れ る äģ– ãŽ プ ロ ã‚ģ ゚ įĩ‚ äē† ã‚š テ ッ プ は 原 行 さ れ ãĒ い 。

POSIX.1 で は 、 atexit () を äŊŋ ãŖ ãĻ į™ģ 錞 さ れ た 一 つ ぎ é–ĸ 数 内 で 、 複 数 回 exit (3) を å‘ŧ ãŗ å‡ē し た 際 ぎ įĩ 果 は æœĒ 厚 įžŠ で あ る 。 (Linux で は ãĒ い が ) い く つ か ぎ ã‚ˇ ゚ テ ム で は 、 こ ぎ å ´ 合 、 įš° り čŋ” し が į„Ą 限 ãĢ čĩˇ こ る こ と ãĢ ãĒ る 。 į§ģ 植 性 が åŋ… čρ ãĒ プ ロ グ ナ ム で は 、 atexit () で į™ģ 錞 さ れ た é–ĸ 数 内 で exit (3) を čĩˇ 動 す ず き で は ãĒ い 。

atexit () と on_exit (3) は 、 同 じ ãƒĒ ゚ ト ãĢ 寞 し ãĻ é–ĸ 数 を į™ģ 錞 す る 。 プ ロ ã‚ģ ゚ が æ­Ŗ 常 ãĢ įĩ‚ äē† ã— た 際 ãĢ は 、 こ れ ら ぎ äēŒ ã¤ ぎ é–ĸ 数 で į™ģ 錞 さ れ た 順 åē ãŽ 逆 順 で 、 į™ģ 錞 さ れ た é–ĸ 数 が čĩˇ 動 さ れ る 。

POSIX.1 で は 、 atexit () で į™ģ 錞 さ れ た é–ĸ 数 ぎ 原 行 を įĩ‚ äē† ã™ る た め ãĢ longjmp (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), dlopen (3), exit (3), on_exit (3)

こ ぎ 文 書 ãĢ つ い ãĻ

こ ぎ man ペ ãƒŧ ジ は Linux man-pages プ ロ ジ ェ ク ト ぎ ãƒĒ ãƒĒ ãƒŧ ゚ 5.10 ぎ 一 部 で あ る 。 プ ロ ジ ェ ク ト ぎ čĒŦ 明 と バ グ å ą 告 ãĢ é–ĸ す る 情 å ą は https://www.kernel.org/doc/man-pages/ ãĢ 書 か れ ãĻ い る 。