Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

acct(2)

plock(2)

semop(2)

sigaction(2)

signal(2)

times(2)

wait(2)

atexit(3C)

exit(2)                                                             exit(2)

NAME
     exit, exit - Prozeß beenden

SYNTAX
     #include <stdlib.h>

     void exit(int status);

     #include <unistd.h>

     void exit(int status);

BESCHREIBUNG
     Die Funktion exit() ruft alle Funktionen auf, die durch die Funktion
     atexit() eingetragen wurden, und zwar in der umgekehrten Reihenfolge
     ihrer Eintragung.

     Wenn eine durch atexit() eingetragene Funktion keinen Wert zurücklie-
     fert, werden die übrigen eingetragenen Funktionen nicht mehr aufgeru-
     fen und der exit-Prozeß stoppt.

     Wenn exit() mehrmals aufgerufen wird, ist das Verhalten undefiniert.

     Mit der Funktion exit() wird der Prozeß ohne diese Bereinigungsmaß-
     nahmen beendet.

     Nachdem alle eingetragenen Funktionen abgearbeitet sind, gibt exit()
     alle Ausgabeströme aus, schließt alle offenen Datenströme und löscht
     alle durch tmpfile() erstellten Dateien.

     exit() und exit() beenden den aufrufenden Prozeß mit nachstehenden
     Folgen:

     -  Alle im aufrufenden Prozeß offenen Dateien, Verzeichnisse und Mel-
        dungsverzeichnisse werden geschlossen.

     -  Wenn der Vaterprozeß eines aufrufenden Prozesses wait(), wait3(),
        waitid() oder waitpid() ausführt und weder das Flag SANOCLDWAIT
        gesetzt noch SIGCHLD auf SIGIGN gesetzt ist, wird er von der Been-
        digung des aufrufenden Prozesses benachrichtigt und die niederwer-
        tigsten acht Bits (Bits 0377) von status werden zur Verfügung
        gestellt. Wenn der Vaterprozeß sich nicht in einem Wartestatus
        befindet, wird ihm der Status des Sohnprozesses zur Verfügung
        gestellt, wenn der Vaterprozeß anschließend wait(), wait3(),
        waitid() oder waitpid() ausführt.

     -  Wenn der Vaterprozeß eines aufrufenden Prozesses kein wait(), wait3(),
        waitid() oder waitpid() ausführt und weder das Flag SANOCLDWAIT
        gesetzt noch SIGCHLD auf SIGIGN gesetzt ist, wird der aufrufende
        Prozeß in einen Zombie-Prozeß umgewandelt. Ein Zombie-Prozeß ist
        ein inaktiver Prozeß, der später gelöscht wird, wenn der zugehörige
        Vaterprozeß wait(), wait3(), waitid() oder waitpid() ausführt.



Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

exit(2)                                                             exit(2)

     -  Die Beendigung eines Prozesses bedeutet nicht, daß auch die zugehö-
        rigen Sohnprozesse direkt beendet werden. Sohnprozesse werden in
        bestimmten Fällen durch das Senden eines SIGHUP-Signals wie weiter
        unten beschrieben indirekt beendet.

     -  Wenn die Implementierung das SIGCHLD-Signal unterstützt, wird ein
        SIGCHLD-Signal an den Vaterprozeß gesendet.

     -  Die Vaterprozeß-ID aller vorhandenen Sohn- und Zombie-Prozesse des
        aufrufenden Prozesses wird auf 1 gesetzt. Dies bedeutet, daß der
        Initialisierungsprozeß jeden dieser Prozesse erbt.

     -  Die Abbildung für jedes im Speicher abgebildete Objekt wird zurück-
        genommen.

     -  Jedes angeschlossene, gemeinsam benutzte Speichersegment (Shared
        Memory Segment) wird abgehängt, und der Wert von shmnattach in der
        Datenstruktur, die der Kennung dieses Segments zugeordnet ist, wird
        um 1 verringert.

     -  Für jedes Semaphor, für das der aufrufende Prozeß einen semadj-Wert
        gesetzt hat [siehe semop(2)], wird dieser semadj-Wert zum semval
        des angegebenen Semaphors hinzugefügt.

     -  Wenn der Prozeß eine Prozeß-, Text- oder Datensperre hat, wird ein
        UNLOCK ausgeführt [siehe plock(2)].

     -  Wenn die Prozeßabrechnungsroutine des Systems eingeschaltet ist,
        wird ein Abrechnungssatz in die Abrechnungsdatei geschrieben [siehe
        acct(2)].

     -  Wenn der Prozeß ein steuernder Prozeß ist, wird SIGHUP an die Pro-
        zeßgruppe im Vordergrund seines steuernden Terminals gesendet, und
        sein steuerndes Terminal wird freigegeben.

     -  Wenn der Prozeß ein steuernder Prozeß ist, wird die Zuordnung des
        steuernden Terminals zur Sitzung aufgehoben, so daß das Terminal
        von einem neuen steuernden Prozeß verwendet werden kann.

     -  Wenn der aufrufende Prozeß irgendwelche angehaltenen Sohnprozesse
        hat, deren Prozeßgruppe verwaist, wenn der aufrufende Prozeß been-
        det wird, oder wenn der aufrufende Prozeß Element einer Prozeß-
        gruppe ist, die verwaist, wenn der aufrufende Prozeß beendet wird,
        werden dieser Prozeßgruppe die Signale SIGHUP und SIGCONT gesendet.

     -  Wenn für den Vaterprozeß das Flag SANOCLDWAIT oder SIGCHLD auf
        SIGIGN gesetzt ist, wird der Status gelöscht, und der aufrufende
        Prozeß wird direkt beendet.

     Die Symbole EXITSUCCESS und EXITFAILURE sind in stdlib.h definiert
     und können als Wert von status verwendet werden, um erfolgreiches oder
     nicht erfolgreiches Beenden anzuzeigen.


Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

exit(2)                                                             exit(2)

HINWEISE
     Siehe signal(2), Abschnitt HINWEISE.

SIEHE AUCH
     acct(2), plock(2), semop(2), sigaction(2), signal(2), times(2),
     wait(2), atexit(3C).
















































Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026