Provided by: manpages-de-dev_2.5-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; 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.

       •  Otherwise,  the  child  becomes  a  "zombie" process: most of the process resources are
          recycled,  but  a  slot  containing  minimal  information  about  the   child   process
          (termination  status,  resource  usage  statistics)  is retained in process table. This
          allows the parent to subsequently use waitpid(2) (or similar) to learn the  termination
          status of the child; at that point the zombie process slot is released.

       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  4.15  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>.