FORK(2)

BEZEICHNUNG
fork, vfork - erzeuge ein Kindprozeß

SYNTAX
#include <unistd.h>

pid_t fork(void);
pid_t vfork(void);

DESCRIPTION
fork erzeugt einen Kindprozeß, der sich vom Vaterprozeß nur durch die PID und PPID unterscheidet und darin, daß die Verwendung von Resourcen auf 0 gesetzt ist. File locks und noch ausstehende Signale werden nicht vererbt.

Unter Linux ist fork unter Benutzung von copy-on-write Seiten implementiert, so dass der einzige Nachteil von fork die Zeit und der Speicher ist, der benötigt wird, um den die Page-Tables des Vaterprozesses zu kopieren und einen Task-Record für den Kindprozeß anzulegen.

RUECKGABEWERT
Bei Erfolg wird dem Vaterprozess die PID des Kindes zurückgegeben und 0 dem Kindprozess. Bei Fehlern wird dem Vaterprozess -1 zurückgegeben und errno entsprechend gesetzt. Ein Kindprozess wird nicht generiert.

FEHLER

EAGAIN
    fork kann nicht ausreichend Speicher alloziieren, um die Page-Tables des Vaterprozesses zu kopieren und einen Task-Record für den Kindprozess anzulegen.

BUGS
Unter Linux ist vfork nichts anderes als ein Alias für fork.
fork gibt niemals den Fehler ENOMEM zurück.

KONFORM ZU
SVID, AT&T, POSIX, X/OPEN, BSD 4.3

SIEHE AUCH
clone(2), execve(2), wait(2).