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

BEZEICHNUNG

       exit - ein normales Prozessende veranlassen

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <stdlib.h>

       [[noreturn]] void exit(int status);

BESCHREIBUNG

       Die  Funktion  exit()  veranlasst  ein  normales Prozessende und gibt das niederwertigste Byte von status
       (d.h. status & 0xFF) an den Elternprozess zurück (siehe wait(2)).

       Die mit atexit(3) und on_exit(3) registrierten Funktionen werden in  der  umgekehrten  Reihenfolge  ihrer
       Registrierung  aufgerufen.  (Eine  solche  Funktion  kann  atexit(3)  oder  on_exit(3)  aufrufen, um eine
       zusätzliche  Funktion  zu  registrieren,  die  während  des  Exit-Prozesses  ausgeführt  wird;  die  neue
       Registrierung wird am Anfang der Liste verbleibender Funktionen hinzugefügt, die noch aufgerufen werden.)
       Wenn  eine dieser Funktionen nicht zurückkehrt (z.B. wenn sie _exit(2) aufruft oder sich selbst mit einem
       Signal beendet), dann wird keine der verbleibenden Funktionen aufgerufen und die weitere  Exit-Ausführung
       (insbesondere  Leeren  von  stdio(3)-Datenströmen)  wird  abgebrochen.  Falls  eine Funktion mehrmals mit
       atexit(3) oder on_exit(3) registriert wurde, dann wird sie so oft aufgerufen, wie sie registriert wurde.

       Alle offenen stdio(3)-Datenströme werden geleert  und  geschlossen.  Durch  tmpfile(3)  erzeugte  Dateien
       werden entfernt.

       Der  C-Standard  spezifiziert  zwei  Konstanten,  EXIT_SUCCESS  und EXIT_FAILURE, die an exit() übergeben
       werden und ein erfolgreiches beziehungsweise erfolgloses Beenden anzeigen.

RÜCKGABEWERT

       Die Funktion exit() kehrt nichts zurück.

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.
       ┌───────────────────────────────────────────────────────┬───────────────────────┬───────────────────────┐
       │ SchnittstelleAttributWert                  │
       ├───────────────────────────────────────────────────────┼───────────────────────┼───────────────────────┤
       │ exit()                                                │ Multithread-Fähigkeit │ MT-Unsicher race:exit │
       └───────────────────────────────────────────────────────┴───────────────────────┴───────────────────────┘

       Die Funktion exit() verwendet eine globale Variable,  die  nicht  geschützt  ist,  daher  ist  sie  nicht
       multithread-fähig.

STANDARDS

       C11, POSIX.1-2008.

GESCHICHTE

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

ANMERKUNGEN

       Das Verhalten ist undefiniert, wenn eine der mit atexit(3) und on_exit(3) registrierten Funktionen exit()
       oder longjmp(3) aufruft. Beachten Sie, dass ein Aufruf von execve(2) die mittels atexit(3) und on_exit(3)
       erstellten Registrierungen entfernt.

       EXIT_SUCCESS  und  EXIT_FAILURE zu benutzen ist etwas portierbarer (auf Nicht-UNIX-Umgebungen), als 0 und
       einen Wert ungleich Null wie 1 oder -1 zu verwenden. Insbesondere VMS hat andere Konventionen.

       BSD  versuchte,  die  Exit-Codes  zu  standardisieren  (was   durch   einige   C-Bibliotheken   wie   die
       GNU-C-Bibliothek auch übernommen wurde); siehe die Datei <sysexits.h>.

       Nach exit() muss der Exit-Status an den Elternprozess übertragen werden. Es gibt drei Fälle:

       •  Falls der Elternprozess SA_NOCLDWAIT oder den Handler SIGCHLD auf SIG_IGN gesetzt hat, wird der Status
          verworfen und das Kind stirbt sofort.

       •  Falls der Elternprozess auf das Kind wartete, wird er über den Exit-Status benachrichtigt und das Kind
          stirbt sofort.

       •  Andernfalls  wird  das  Kind ein »Zombie«-Prozess: die meisten der Ressourcen des Prozessen werden neu
          genutzt, aber eine Position,  die  minimale  Informationen  über  den  Kindprozess  (Beendigungstatus,
          Ressourcenverwendungsstatistik)  enthält,  wird  in  der  Prozesstabelle  beibehalten. Dies erlaubt es
          Elternprozessen, nachfolgend waitpid(2) (oder ähnliches) zu verwenden, um  den  Beendigungsstatus  des
          Kindprozesses zu erfahren; zu diesem Zeitpunkt wird die Zombiprozessposition freigegeben.

       Wenn  die Implementation das Signal SIGCHLD unterstützt, wird dieses Signal an den Elternprozess gesandt.
       Falls der Elternprozess SA_NOCLDWAIT gesetzt hat, ist nicht definiert, ob ein SIGCHLD gesandt wird.

   An andere Prozesse gesandte Signale
       Falls der beendende Prozess der führende Prozess  der  Sitzung  ist  und  sein  steuerndes  Terminal  das
       steuernde  Terminal  der  Sitzung  ist,  dann  wird jedem Prozess in der Vordergrund-Prozessgruppe dieses
       steuernden Terminals ein SIGHUP-Signal gesandt und das Terminal  wird  von  dieser  Sitzung  gelöst,  was
       ermöglicht, dass es von einem neuen steuernden Prozess übernommen wird.

       Falls  das  Beenden des Prozesses das Verwaisen einer Prozessgruppe verursacht und jedes Mitglied der neu
       verwaisten Gruppe gestoppt wird, dann wird ein SIGHUP-Signal gefolgt von einem  SIGCONT-Signal  an  jeden
       Prozess  in  dieser  Prozessgruppe  gesandt.  Lesen  Sie setpgid(2), wenn Sie eine Erläuterung verwaister
       Prozessgruppen suchen.

       Außer in den obigen Fällen, bei denen der signalisierte Prozess ein Kind des  beendenden  Prozesses  sein
       könnte,  führt  das  Beenden  von  Prozesse  im allgemeinen nicht dazu, dass ein Signal an die Kinder des
       Prozesses gesandt wird. Allerdings kann ein Prozess die Aktion prctl(2) PR_SET_PDEATHSIG verwenden, damit
       es ein Signal bekommt, wenn sein Elternprozess sich beendet.

SIEHE AUCH

       _exit(2), get_robust_list(2), setpgid(2), wait(2), atexit(3), on_exit(3), tmpfile(3)

ÜBERSETZUNG

       Die  deutsche  Übersetzung  dieser  Handbuchseite  wurde  von  Stefan   Janke   <gonzo@burg.studfb.unibw-
       muenchen.de>, Chris Leick <c.leick@vollbio.de> und Helge Kreutzmann <debian@helgefjell.de> erstellt.

       Diese  Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 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.

Linux man-pages 6.9.1                              2. Mai 2024                                           exit(3)