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

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.
┌───────────────────────────────────────────────────────┬───────────────────────┬───────────────────────┐
│ Schnittstelle │ Attribut │ Wert │
├───────────────────────────────────────────────────────┼───────────────────────┼───────────────────────┤
│ 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)