FORK(2)

NOMBRE
fork, vfork - crea el descendiente de un proceso (child process).

SINOPSIS
#include <unistd.h>

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

DESCRIPCION
fork crea un proceso descendiente que difiere de su procesor ascendiente sólo en su PID y PPID, y en el hecho que el uso de recursos esté asignado a 0. Los candados de fichero (file locks) y las señales pendientes no se heredan.

En linux, fork está implementado usando páginas copia-en-escritura (copy-on-write), así que la única penalización incurrida por fork es el tiempo y memoria requeridas para duplicar las tablas de las páginas del ascendiente, y para crear una estructura de tarea (task structure) para el descendiente.

VALOR REGRESADO
En caso de éxito, el PID del proceso descendiente se regresa en el hilo de ejecución (execution thread) de su ancestro, y un 0 regresa en el hilo de ejecución del descendiente. En caso de fallo, se regresará un -1 en el contexto del ascendiente, no se creará ningún proceso descendiente, y errno será asinado apropiadamente.

ERRORES

EAGAIN
    fork no puede asignar sufficiente memoria para copiar las tablas de páginas del ancestro y asignar una estructura de tarea para el descendiente.

BUGS
En Linux, vfork es simplemente un alias para fork.
fork nunca regresa el error ENOMEM.

CONFORMA CON
SVID, AT&T, POSIX, X/OPEN, BSD 4.3

VÉASE
clone(2), execve(2), wait(2)