table of contents
ATEXIT(3) | Linux - příručka programátora | ATEXIT(3) |
JMÉNO¶
atexit - registruje funkci, která se má vyvolat při ukončení procesu.
SYNTAXE¶
#include <stdlib.h> int atexit(void (* function)(void));
POPIS¶
Funkce atexit() zařadí function() do seznamu funkcí, které jsou vyvolány při normálním ukončení programu, ať už funkcí exit(2) nebo návratem z funkce main. Funkce takto registrované jsou volány v obráceném pořadí jejich registrace; nejsou jim poskytnuty žádné argumenty.
POSIX.1-2001 vyžaduje, aby implementace dovolovala minimálně ATEXIT_MAX (32) registrací takovýchto funkcí. Skutečný počet možných registrací podporovaných v dané implementaci je možné zjistit pomocí sysconf (3).
Při vytvoření procesu pomocí fork (2), zdědí potomek registrace svých rodičů. Při úspěšném volání funkce exec (3), jsou všechny registrace odstraněny.
NÁVRATOVÁ HODNOTA¶
Funkce atexit() vrací hodnotu 0, byla-li úspěšná, jinak je vrácena nenulová hodnota.
SPLŇUJE STANDARDY¶
SVr4, BSD 4.3, C89, C99, POSIX.1-2001
POZNÁMKA¶
Funkce registrované pomocí atexit() (a on_exit()) nejsou volány, pokud je proces abnormálně ukončen, například kvůli doručení signálu.
Linuxová poznámka
Od verze glibc 2.2.3, mohou být atexit() (a on_exit()) použity uvnitř sdílených knihoven, aby spouštěly funkce, které jsou volány, je-li knihovna uvolněna z paměti.
PŘÍKLAD¶
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void
bye(void)
{
printf("That was all, folks 0);
}
int
main(void)
{
long a;
int i;
a=sysconf(_SC_ATEXIT_MAX);
printf("ATEXIT_MAX = %ld0, a);
i=atexit(bye);
if(i != 0) {
fprintf(stderr, "cannot set exit functoin0);
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
DALŠÍ INFORMACE¶
3.září 2009 | GNU |