clone(2) Linux manual page est un appel système du noyau Linux qui crée un processus fils partageant le même contexte d'exécution que son père (le même espace d'adressage). Il est utilisé par certaines bibliothèques implémentant les threads sous Linux. En pratique, n'est jamais appelé directement, mais à travers une bibliothèque de gestion des threads (telle que pthreads, qui propose la fonction ).

Le prototype de cette fonction est le suivant : #include <sched.h> int clone (int (*fn) (void *), void *child_stack, int flags, void *arg);

crée un nouveau fil d'exécution, exécutant la fonction pointée par le paramètre (à l'opposé de où l'exécution se poursuit sur l'instruction suivante). Le paramètre est un pointeur vers l'espace mémoire utilisé comme pile pour le nouveau fil d'exécution (qui doit préalablement être alloué par un appel à ; il doit pointer sur la dernière case mémoire). Le paramètre spécifie ce que le fils doit hériter du contexte d'exécution du père. Le paramètre est un pointeur générique pour le passage d'arguments à la fonction . Cet appel retourne le thread ID du fils en cas de succès, ou -1 en cas d'échec (et est valorisé en conséquence).

À noter que cet appel système est spécifique au noyau Linux et ne doit pas être utilisé dans du code destiné à être compilé pour d'autres noyaux .

Notes et références

Voir aussi Fork (programmation)

Bibliographie

The Linux Programming Interface: A Linux and UNIX System Programming Handbook, Michael Kerrisk, pages 598-609

Catégorie:Unix Catégorie:Développement logiciel Catégorie:Programmation concurrente