focal (3) exit.3.gz

Provided by: manpages-de-dev_2.16-1_all bug

BEZEICHNUNG

       exit - ein normales Prozessende veranlassen

ÜBERSICHT

       #include <stdlib.h>

       void exit(int status);

BESCHREIBUNG

       Die  Funktion  exit()  veranlasst  ein  normales  Prozessende  und gibt den Wert von status & 0377 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-Unsafe race:exit │
       └──────────────┴───────────────────────┴─────────────────────┘
       Die  Funktion  exit()  verwendet  eine  globale  Variable,  die  nicht geschützt ist, daher ist sie nicht
       multithread-fähig.

KONFORM ZU

       POSIX.1-2001, POSIX.1-2008, C89, C99, 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)

KOLOPHON

       Diese Seite ist Teil der Veröffentlichung  5.03  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  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
       <debian-l10n-german@lists.debian.org>.