Provided by: manpages-de-dev_0.10-1_all bug

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>.