CLONE(2)

NOM
clone - Creer un processus fils (child).

SYNOPSIS
#include <linux/sched.h>
#include <linux/unistd.h>

pid_t clone(void *sp, unsigned long flags)

DESCRIPTION
clone est une alternative pour fork, proposant des options supplementaires. fork est equivalent a clone(0, SIGCLD|COPYVM). Si l'argument sp est non-nul, le processus fils utilisera sp comme pointeur de pile initial. Les octets de poids faibles de flags contiennent le numero du signal a envoyer au processus parent lors de la mort du processus fils. flags peut aussi contenir un OU binaire ( | ) avec les options COPYVM et COPYFD. Si l'attribut COPYVM est choisi, les pages memoires du fils sont des images des pages du pere qui seront dupliquees lors de l'ecriture (copy-on-write). Sinon, le fils partage les memes pages que le pere, et les deux processus peuvent ecrire sur la meme zone de donnees. Si COPYFD est choisi, les descripteurs de fichiers du fils sont des copies de ceux du pere. Sinon le pere et le fils partagent les memes descripteurs de fichiers.

VALEUR RENVOYEE
clone S'il reussit, renvoie le PID du processus fils au processus pere, et 0 au processus fils. En cas d'echec clone renvoie -1 au processus pere, aucun processus fils n'est cree, et errno contient le code d'erreur.

ERREURS

ENOSYS
    clone declenchera toujours cette erreur a moins que le noyau n'ait ete compile avec la constante symbolique CLONE_ACTUALLY_WORKS_OK definie.

EAGAIN
    Pas assez de memoire pour copier les tables de pages du processus parent et allouer une structure de tache pour le processus fils.

BUGS
Par defaut CLONE_ACTUALLY_WORKS_OK n'est pas defini.
Il n'y a pas de definition pour clone dans libc.so.4.5.26.
Les commentaires dans le noyau (1.1.46) indiquent que le cas ou COPYVM n'est pas defini est mal gere.

CONFORMITE
Cet appel-systeme est specifique a Linux et ne doit pas etre employe dans des programmes portables.

VOIR AUSSI
fork(2)