CLONE(2) Manual del Programador CLONE(2) NOMBRE clone - crea un descendiente del proceso SINOPSIS #include <linux/sched.h> #include <linux/unistd.h> pid_t clone(void *sp, unsigned long flags) DESCRIPCIÓN clone es un interfase alternativo a fork, con más opciones. fork es equivalente a clone(0, SIGCLD|COPYVM). Si sp no es cero, el proceso descendiente usa sp como su puntero pila inicial (initial stack pointer). El byte bajo de flags contiene la señal enviada al ascendiente cuando el descendiente muere. flags también puede estar or-operado (bitwise or) con COPYVM ó/y COPYFD. Si COPYVM está asignado, las páginas del descendiente son imágenes copias-en-escritura de las páginas del ascendiente. Si COPYVM no está asignado, el proceso descendiente comparte las mismas páginas con su ascendiente, y ambos pueden escribir en el mismo dato. Si COPYFD está asignado, los descriptores de fichero del descendiente son copia de los relativos a su ancestor. Si COPYFD no está asignado, los descriptores de ficheros del descendiente y ascendiente se comparten. VALOR REGRESADO En caso de éxito, el PID del descendiente regresa en el hilo de ejecución del ascendiente, y un 0 vuelve en el hilo de ejecución del descendiente. En caso de fallo, un -1 será vuelto en el contexto del ascendiente, no se creará ningún proceso descendiente, y la variable errno será asignada apropiadamente. ERRORES ENOSYS clone siempre regresará este error a menos que su kernel halla sido compilado con CLONE_ACTUALLY_WORKS_OK definido. EAGAIN fork no puede distribuir suficiente memoria para copiar las tablas de páginas del ascendiente y asignar una estructura de tarea (task structure) para el descendiente. BUGS Normalmente CLONE_ACTUALLY_WORKS_OK no está definido. No hay una entrada para clone en /lib/libc.so.4.5.26. Comentarios en el kernel (hasta 1.1.46) indican que este no sabe tratar el caso en el que COPYVM no está definido. VÉASE fork(2) Linux 1.2.9 20 Diciembre 1995 CLONE(2)