"Fossies" - the Fresh Open Source Software archive 
Table of Contents
fork, vfork - erzeugt einen Kindprozess
#include <unistd.h>
pid_t fork(void);
pid_t vfork(void);
fork erzeugt einen Kindprozess, der sich
vom Vaterprozess nur durch die PID und PPID unterscheidet und darin, dass
die Verwendung von Ressourcen 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 Kindprozess anzulegen.
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.
- EAGAIN
- fork kann nicht ausreichend Speicher zuweisen, um die Page-Tabellen des
Vaterprozesses zu kopieren und einen Task-Record fĂ¼r den Kindprozess anzulegen.
Unter Linux ist vfork nichts anderes als ein Alias fĂ¼r fork.
fork gibt niemals den Fehler ENOMEM zurĂ¼ck.
SVID, AT&T, POSIX,
X/OPEN, BSD 4.3
clone(2), execve(2), wait(2).
Table of Contents