clone()es una llamada al sistema del kernel de Linux que creó un proceso que comparte el mismo contexto de ejecución que su padre (el mismo espacio de direcciones). Es utilizado por algunas bibliotecas que implementan subprocesos en Linux. En la práctica, clone()nunca se llama directamente, sino a través de una biblioteca de gestión de subprocesos (como pthreads , que proporciona la función phtread_create()).
El prototipo de esta función es el siguiente:
#include <sched.h> int clone (int (*fn) (void *), void *child_stack, int flags, void *arg);clone()crea un nuevo hilo, ejecutando la función apuntada por el parámetro fn(lo contrario de fork()donde la ejecución continúa en la siguiente instrucción). El parámetro child_stackes un puntero al espacio de memoria utilizado como pila para el nuevo subproceso de ejecución (que primero debe asignarse mediante una llamada a malloc() ; debe apuntar a la última ranura de memoria). El parámetro flagsespecifica qué debe heredar el hijo del contexto de ejecución del padre. El parámetro arges un puntero genérico para pasar argumentos a la función fn. Esta llamada devuelve el ID de hilo del hijo en caso de éxito, o -1 en caso de error (y errnose valora en consecuencia).
Tenga en cuenta que esta llamada al sistema es específica del kernel de Linux y no debe utilizarse en un código destinado a ser compilado para otros kernels.