_exit(2) System Calls Manual _exit(2) BEZEICHNUNG _exit, _Exit - beendet den aufrufenden Prozess BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include [[noreturn]] void _exit(int status); #include [[noreturn]] void _Exit(int status); Mit Glibc erforderliche Feature-Test-Makros (siehe feature_test_macros(7)): _Exit(): _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L BESCHREIBUNG _exit beendet den aufrufenden Prozess >>sofort<<. Alle zum Prozess gehorenden offenen Datei-Deskriptoren werden geschlossen. Alle Kindprozesse dieses Prozesses werden von init(1) geerbt (oder vom nachsten >>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 zuruckgegeben und kann durch den Elternprozess mit einem Aufruf der wait(2)-Familie ermittelt werden. Die Funktion _Exit() entspricht _exit(). RUCKGABEWERT Diese Funktionen kehren nicht zuruck. STANDARDS _exit() POSIX.1-2008. _Exit() C11, POSIX.1-2008. GESCHICHTE POSIX.1-2001, SVr4, 4.3BSD. _Exit() wurde in C99 eingefuhrt. ANMERKUNGEN Fur eine Diskussion uber die Auswirkungen eines Exit, die Ubertragung des Exit-Status, Zombieprozesse, gesendete Signale, usw. lesen Sie exit(3). Die Funktion _exit() ist exit(3) ahnlich, ruft aber keine mit atexit(3) oder on_exit(3) registrierten Funktionen auf. Geoffnete stdio(3)-Strome werden nicht geleert. Andererseits schliesst _exit() offene Datei-Deskriptoren und dies konnte beim Warten auf das Beenden ausstehender Ausgaben eine nicht vorhersehbare Verzogerung verursachen. Falls die Verzogerung nicht erwunscht ist, kann es nutzlich 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, hangt von der Implementierung ab. Unterschiede C-Bibliothek/Kernel Der oben in BESCHREIBUNG dargestellte Text beschreibt die traditionelle Auswirkung von _exit(), die darin besteht, einen Prozess zu beenden, und die in POSIX.1 spezifizierten Semantiken, die durch die Wrapper-Funktion implementiert sind. Auf modernen Systemen bedeutet dies die Beendigung aller Threads in dem Prozess. Im Kontrast zur C-Bibliotheks-Wrapperfunktion beendet der rohe Systemaufruf _exit() nur den aufrufenden Thread und Aktionen, wie Kindprozesse, die einen anderen Elternprozess auswahlen oder das Senden von SIGCHLD an den Elternprozess werden nur durchgefuhrt, falls dies der letzte Thread in der Thread-Gruppe ist. Bis Glibc 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 Ausfuhrungsstrange in einem Prozess zu beenden. SIEHE AUCH execve(2), exit_group(2), fork(2), kill(2), wait(2), wait4(2), waitpid(2), atexit(3), exit(3), on_exit(3), termios(3) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Martin Schulze , Chris Leick , Dr. Tobias Quathamer und Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.06 31. Oktober 2023 _exit(2)