Provided by: manpages-de-dev_4.23.1-1_all bug

BEZEICHNUNG

       atexit - legt eine Funktion fest, die beim normalen Programmende aufgerufen wird

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <stdlib.h>

       int atexit(void (*Funktion)(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  zurückkehrt.  Funktionen,  die  so  festgelegt  sind, werden in umgekehrter
       Reihenfolge ihrer Registrierung aufgerufen; es werden keine Argumente übergeben.

       Die  gleiche  Funktion  kann  mehrfach  registriert  werden:  sie  wird  einmal  für  jede
       Registrierung aufgerufen.

       POSIX.1  verlangt, dass eine Implementierung mindestens ATEXIT_MAX (32) solcher Funktionen
       registrieren kann. Die tatsächlich durch eine Implementierung unterstützte  Grenze  können
       Sie mit sysconf(3) ermitteln.

       Wenn  mittels  fork(2)  ein  Kindprozess erstellt wird, erbt er Kopien der Registrierungen
       seines Elternprozesses. Nach  einem  erfolgreichen  Aufruf  einer  der  exec(3)-Funktionen
       werden alle Registrierungen entfernt.

RÜCKGABEWERT

       Die  Funktion  atexit()  gibt  bei  Erfolg  0  zurück;  anderenfalls  wird  ein  von  Null
       verschiedener Wert zurückgegeben.

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.

       ┌─────────────────────────────────────────────────────┬───────────────────────┬───────────┐
       │SchnittstelleAttributWert      │
       ├─────────────────────────────────────────────────────┼───────────────────────┼───────────┤
       │atexit()                                             │ Multithread-Fähigkeit │ MT-Sicher │
       └─────────────────────────────────────────────────────┴───────────────────────┴───────────┘

VERSIONEN

       POSIX.1 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 führen.  Portable  Programme  sollten
       exit(3) nicht innerhalb einer von atexit() registrierten Funktion aufrufen.

STANDARDS

       C11, POSIX.1-2008.

GESCHICHTE

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

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) durchzuführenden
       Schritte zur Beendigung des Prozesses werden nicht durchgeführt.

       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  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 können atexit() (und on_exit(3))  zur  Erzeugung  von  Funktionen   einer
       dynamische Bibliothek verwendet werden, die aufgerufen werden, wenn die Bibliothek aus dem
       Speicher entfernt wird.

BEISPIELE

       #include <stdio.h>
       #include <stdlib.h>
       #include <unistd.h>

       void
       bye(void)
       {
           printf("Das wars, 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, "Exit-Funktion kann nicht gesetzt werden\n");
               exit(EXIT_FAILURE);
           }

           exit(EXIT_SUCCESS);
       }

SIEHE AUCH

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

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite wurde  von  Patrick  Rother  <krd@gulu.net>,
       Martin     Eberhard     Schauer    <Martin.E.Schauer@gmx.de>    und    Helge    Kreutzmann
       <debian@helgefjell.de> erstellt.

       Diese Übersetzung ist Freie Dokumentation;  lesen  Sie  die  GNU  General  Public  License
       Version  3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ oder neuer bezüglich der Copyright-
       Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-
       Mail an die Mailingliste der Übersetzer ⟨debian-l10n-german@lists.debian.org⟩.