Scroll to navigation

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

_exit(2), exit(3), on_exit(3)

3.září 2009 GNU