Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

alarm(2)

exec(2)

fcntl(2)

getrlimit(2)

nice(2)

plock(2)

priocntl(2)

ptrace(2)

semop(2)

shmop(2)

signal(2)

times(2)

ulimit(2)

umask(2)

wait(2)

system(3S)

unistd(4)

lfs(5)

types(5)

fork(2)                                                             fork(2)

NAME
     fork - Neuen Prozeß erzeugen

SYNTAX
     #include <sys/types.h>
     #include <unistd.h>

     pidt fork(void);

BESCHREIBUNG
     fork() bewirkt die Erzeugung eines neuen Prozesses. Der neue Prozeß
     (Sohnprozeß) ist eine genaue Kopie des aufrufenden Prozesses (Vater-
     prozeß). Dies bedeutet, daß der Sohnprozeß nachstehende Attribute vom
     Vaterprozeß erbt:

     -  reale Benutzer- und Gruppen-ID, effektive Benutzer- und Gruppen-ID

     -  Umgebung

     -  "Schließen-bei-exec"-Bit [siehe exec(2)]

     -  Einstellungen für Signalbehandlung (SIGDFL, SIGIGN, SIGHOLD,
        Funktionsadresse)

     -  zusätzliche Gruppen-IDs

     -  s-Bit für Eigentümer

     -  s-Bit für Gruppe

     -  Ein-/Aus-Status für Profilierung

     -  nice-Wert [siehe nice(2)]

     -  Prozeßbereich [siehe priocntl(2)]

     -  alle zugeteilten gemeinsam benutzten Speichersegmente [siehe
        shmop(2)]

     -  Prozeßgruppen-ID

     -  Terminalnummer [siehe exit(2)]

     -  Aktuelles Verzeichnis

     -  Root-Verzeichnis

     -  Dateimodus-Erstellungsmaske [siehe umask(2)]







Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

fork(2)                                                             fork(2)

     -  Ressourcengrenzwerte

        Ein 32-Bit-Prozeß erhält gegebenenfalls die 64-Bit-Ressourcen des
        Eltern-Prozesses vererbt [vgl. getrlimit(2) und dort die Erläute-
        rungen zu RLIMSAVEDCUR und RLIMSAVEDMAX sowie ulimit(2)].

     -  steuerndes Terminal

     Prozeßpriorität und jegliche prozeßspezifischen Prioritätsparameter,
     die für den gegebenen Prozeßbereich bezeichnend sind, können abhängig
     von Vereinbarungen diesem speziellen Bereich vererbt sein [siehe
     priocntl(2)].

     Der Sohnprozeß unterscheidet sich vom Vaterprozeß in folgenden Punk-
     ten:

     -  Der Sohnprozeß hat eine eindeutige Prozeß-ID, die ungleich allen
        anderen Prozeßgruppen-IDs ist.

     -  Der Sohnprozeß hat eine andere Vaterprozeß-ID (d. h. die Prozeß-ID
        des Vaterprozesses).

     -  Der Sohnprozeß hat eine eigene Kopie des Dateideskriptors und des
        Verzeichnis-Streams des Vaterprozesses. Jeder Sohndateideskriptor
        hat einen gemeinsamen Schreib-/Lesezeiger mit dem entsprechenden
        Dateideskriptor des Vaters.

     -  Alle semadj-Werte werden aufgehoben [siehe semop(2)].

     -  Prozeßsperren, Textsperren und Datensperren werden vom Sohnprozeß
        nicht geerbt [siehe plock(2)].

     -  Die tms-Struktur des Sohnprozesses ist wie folgt deklariert:
        tmsutime, stime, cutime und cstime werden auf 0 gesetzt [siehe
        times(2)].

     -  Die Zeitspanne bis zum Rücksetzen eines Alarmuhrsignals wird auf 0
        gesetzt.

     -  Die Menge der Signale, die an den Prozeß ausgeliefert werden sol-
        len, wird auf eine leere Menge initialisiert.

     -  Der Sohnprozeß kann eine eigene Kopie der Meldungskatalogdeskripto-
        ren des Vaterprozesses haben.

     -  Intervallzeitgeber werden in einem Sohnprozeß zurückgesetzt.

     Vom Vaterprozeß gesetzte Datensatzsperren werden nicht vom Sohnprozeß
     geerbt [siehe fcntl(2)].





Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

fork(2)                                                             fork(2)

FEHLER
     Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
     Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
     errno(5).

     fork() ist erfolglos, und ein Sohnprozeß wird nicht erstellt, wenn
     einer oder mehrere der nachstehenden Punkte zutreffen:

     EAGAIN    Die systembedingte Begrenzung der Gesamtanzahl der für einen
               Benutzer ablaufenden Prozesse würde überschritten.

     EAGAIN    Der Systemspeicher, der beim Lesen über die ungepufferte
               ("raw") Ein-/Ausgabeschnittstelle zur Verfügung steht, ist
               vorübergehend unzureichend.

     ENOMEM    Der Swap-Bereich ist zu klein.

ERGEBNIS
     Nach erfolgreicher Beendigung gibt fork() 0 an den Sohnprozeß und die
     Prozeß-ID des Sohnprozesses an den Vaterprozeß zurück. Andernfalls
     wird (pidt)-1 an den Vaterprozeß zurückgegeben, kein Sohnprozeß
     erstellt und errno zur Anzeige des Fehlers gesetzt.

SIEHE AUCH
     alarm(2), exec(2), fcntl(2), getrlimit(2), nice(2), plock(2),
     priocntl(2), ptrace(2), semop(2), shmop(2), signal(2), times(2),
     ulimit(2), umask(2), wait(2), system(3S), unistd(4), lfs(5), types(5).



























Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

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