Provided by: manpages-de-dev_1.11-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

       Es  ist  undefiniert,  was  geschieht,  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; siehe die Datei <sysexits.h>.

       Nach exit() muss der Exit-Status an den Elternprozess übertragen werden. Dabei werden drei
       Fälle   unterschieden.   Falls  beim  Elternprozess  SA_NOCLDWAIT  gesetzt  ist  oder  die
       SIGCHLD-Behandlungsroutine auf SIG_IGN gesetzt wurde, wird der Status verworfen. Wenn  der
       Elternprozess auf den Kindprozess wartete, wird er über den Exit-Status benachrichtigt. In
       beiden Fällen »stirbt« der Prozess, der beendet  wird,  sofort.  Falls  der  Elternprozess
       nicht  angezeigt  hat,  dass  er  nicht am Exit-Status interessiert ist, aber nicht darauf
       wartet, dann wird der zu beendende Prozess in einen »Zombieprozess« verwandelt (was nichts
       anderes  ist,  als  ein  Behälter  für einen einzelnen Wert, den Exit-Status), so dass der
       Elternprozess den Exit-Status erfahren kann, indem er später eine  der  wait(2)-Funktionen
       aufruft.

       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.

       Falls  der  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.

SIEHE AUCH

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

KOLOPHON

       Diese Seite  ist  Teil  der  Veröffentlichung  4.04  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 http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die   deutsche   Übersetzung    dieser    Handbuchseite    wurde    von    Stefan    Janke
       <gonzo@burg.studfb.unibw-muenchen.de> und Chris Leick <c.leick@vollbio.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>.