plucky (3) atexit.3.gz

Provided by: manpages-de-dev_4.25.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⟩.