_EXIT(2) Linux-Programmierhandbuch _EXIT(2)

_exit, _Exit – beendet den aufrufenden Prozess

ÜBERSICHT

#include <unistd.h>
noreturn void _exit(int status);
#include <stdlib.h>
noreturn void _Exit(int status);
Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

_Exit():


_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L

_exit beendet den aufrufenden Prozess »sofort«. Alle zum Prozess gehörenden offenen Datei-Deskriptoren werden geschlossen. Alle Kindprozesse dieses Prozesses werden von init(1) geerbt (oder vom nächsten »subreaper«-Prozess, der durch die Verwendung der PR_SET_CHILD_SUBREAPER-Aktion mittels prctl(2) festgelegt wird). Dem Elternprozess wird ein SIGCHLD-Signal gesandt.

Der Wert status & 0xFF wird als Exit-Status des Prozesses an den Elternprozess zurückgegeben und kann durch den Elternprozess mit einem Aufruf der wait(2)-Familie ermittelt werden.

Die Funktion _Exit() entspricht _exit().

Diese Funktionen kehren nicht zurück.

POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD. Die Funktion _Exit() wurde in C99 eingeführt.

Für eine Diskussion über die Auswirkungen eines Exit, die Übertragung des Exit-Status, Zombieprozesse, gesendete Signale, usw. lesen Sie exit(3).

Die Funktion _exit() ist exit(3) ähnlich, ruft aber keine mit atexit(3) oder on_exit(3) registrierten Funktionen auf. Geöffnete stdio(3)-Ströme werden nicht geleert. Andererseits schließt _exit() offene Datei-Deskriptoren und dies könnte beim Warten auf das Beenden ausstehender Ausgaben eine nicht vorhersehbare Verzögerung verursachen. Falls die Verzögerung nicht erwünscht ist, kann es nützlich sein, vor dem Aufruf von _exit(), Funktionen wie tcflush(3) aufzurufen. Ob irgend eine ausstehende E/A abgebrochen wird und welche ausstehende E/A per _exit abgebrochen wird, hängt von der Implementierung ab.

In Glibc bis einschließlich Version 2.3 rief die Wrapper-Funktion _exit() den gleichnamigen Kernel-Systemaufruf auf. Seit Glibc 2.3 ruft die Wrapper-Funktion exit_group(2) auf, um alle Ausführungsstränge in einem Prozess zu beenden.

Der rohe Systemaufruf _exit() beendet nur den aufrufenden Thread und Aktionen, wie Kindprozesse, die einen anderen Elternprozess auswählen oder das Senden von SIGCHLD an den Elternprozess werden nur durchgeführt, falls dies der letzte Thread in der Thread-Gruppe ist.

execve(2), exit_group(2), fork(2), kill(2), wait(2), wait4(2), waitpid(2), atexit(3), exit(3), on_exit(3), termios(3)

Diese Seite ist Teil der Veröffentlichung 5.13 des Projekts Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Schulze <joey@infodrom.org>, Chris Leick <c.leick@vollbio.de>, Dr. Tobias Quathamer <toddy@debian.org> 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.

22. März 2021 Linux