Provided by:
manpages-de-dev_0.10-1_all 
BEZEICHNUNG
atexit - legt eine Funktion fest, die beim normalen Programmende
aufgerufen wird
"UBERSICHT
#include <stdlib.h>
int atexit(void (*function)(void));
BESCHREIBUNG
Die Funktion atexit() legt fest, dass die angegebene Funktion bei
normalem Programmende aufgerufen wird, also wenn entweder exit(3)
aufgerufen wird oder das Programm aus seiner main-Funktion zuruckkehrt.
Funktionen, die so festgelegt sind, werden in umgekehrter Reihenfolge
ihrer Registrierung aufgerufen; es werden keine Argumente ubergeben.
Die gleiche Funktion kann mehrfach registriert werden: sie wird einmal
fur jede Registrierung aufgerufen.
POSIX.1-2001 verlangt, dass eine Implementierung mindestens ATEXIT_MAX
(32) solcher Funktionen registrieren kann. Die tatsachlich durch eine
Implementierung unterstutzte Grenze konnen Sie mit sysconf(3)
ermitteln.
Wenn mittels fork(2) ein Kind-Prozess erzeugt wird, erbt er Kopien der
Registrierungen seiner Eltern. Nach einem erfolgreichen Aufruf einer
der exec(3)-Funktionen werden alle Registrierungen entfernt.
R"UCKGABEWERT
Die Funktion atexit() gibt bei Erfolg 0 zuruck; anderenfalls wird ein
von Null verschiedener Wert zuruckgegeben.
KONFORM ZU
SVr4, 4.3BSD, C89, C99, POSIX.1-2001.
ANMERKUNGEN
Unter Verwendung von atexit() (und on_exit(3)) registrierte Funktionen
werden nicht aufgerufen, wenn die Prozesse wegen eines Signals nicht
normal beendet werden.
Wenn eine der registrierten Funktionen _exit(2) aufruft, dann werden
jedwede noch verbleibende Funktionen nicht aufgerufen und die anderen
von exit(3) durchzufuhrenden Schritte zur Beendigung des Prozesses
werden nicht durchgefuhrt.
POSIX.1-2001 legt das Verhalten bei mehrmaligem Aufruf von exit(3)
(d.h. der Aufruf von exit(3) innerhalb einer mit atexit() registrierten
Funktion) nicht fest. Auf manchen Systemen (aber nicht Linux) kann dies
zu einer Endlosschleife fuhren. Portable Programme sollten exit(3)
nicht innerhalb einer von atexit() registrierten Funktion aufrufen.
Die Funktionen atexit() und on_exit(3) registrieren Funktionen in der
gleichen Liste. Wird ein Prozess normal beendet werden die
registrierten Funktionen in der umgekehrten Reihenfolge ihrer
Registrierung durch diese beiden Funktion aufgerufen (also die zuletzt
registrierte Funktion zuerst).
POSIX.1-2001 legt das Verhalten nicht fest, wenn eine der mit atexit(3)
registrierten Funktionen mittels longjmp(3) beendet wird.
Linux-Anmerkungen
Seit glibc 2.2.3 konnen atexit() (und on_exit(3)) zur Erzeugung von
Funktionen einer Laufzeitbibliothek verwendet werden, die aufgerufen
werden, wenn die Bibliothek aus dem Speicher entfernt wird.
BEISPIEL
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void
bye(void)
{
printf("Das war alles, Leute\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,
"Funktion fur Programmschluss kann nicht gesetzt werden\n");
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
SIEHE AUCH
_exit(2), exit(3), on_exit(3)
KOLOPHON
Diese Seite ist Teil der Veroffentlichung 3.32 des Projekts
Linux-man-pages. Eine Beschreibung des Projekts und Informationen, wie
Fehler gemeldet werden konnen, finden sich unter
http://www.kernel.org/doc/man-pages/.
"UBERSETZUNG
Die deutsche Ubersetzung dieser Handbuchseite wurde von Patrick Rother
<krd@gulu.net> und Martin Eberhard Schauer <Martin.E.Schauer@gmx.de>
erstellt.
Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General
Public License Version 3 oder neuer bezuglich der Copyright-
Bedingungen. Es wird KEINE HAFTUNG ubernommen.
Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden,
schicken Sie bitte eine E-Mail an <debian-l10n-
german@lists.debian.org>.