Section courante

A propos

Section administrative du site

CLONE

Clonage
  sched.h

Syntaxe

int clone(int (*fn)(void *), void *child_stack, int flags, void *arg, ... /* pid_t *ptid, void *newtls, pid_t *ctid */ ); Prototype glibc
long clone(unsigned long flags, void *child_stack, int *ptid, unsigned long newtls, int *ctid); Architecture 80x86 en 32 bits
long clone(unsigned long flags, void *child_stack, int *ptid, int *ctid, unsigned long newtls); Architecture 80x86 en 64 bits
long clone(void *child_stack, unsigned long flags, int *ptid, int *ctid, unsigned long newtls); Architecture s390
long clone(unsigned long flags, void *child_stack, int stack_size, int *ptid, int *ctid, unsigned long newtls); Architecture microblaze

Paramètres

Nom Description
fn Ce paramètre permet de retourner le résultat de la terminaison du processus par cette fonction.
child_stack Ce paramètre permet d'indiquer le résultat de la pile qu'utilisera le processus enfant.
stack_size Ce paramètre permet d'indiquer la taille de la pile.
flags Ce paramètre permet d'indiquer l'option :
Constante Version de noyau Description
CLONE_CHILD_CLEARTID Linux 2.5.49 Cette constante permet d'effacer (mettre à zéro) l'identificateur du processus léger enfant du paramètre ctid dans la mémoire enfant lorsque l'enfant se termine, et se réactiver sur le futex à cette adresse. L'adresse impliquée peut être modifiée par l'appel système set_tid_address.
CLONE_CHILD_SETTID Linux 2.5.49 Cette constante permet d'entreposer l'identificateur de processus léger enfant du paramètre ctid dans la mémoire de l'enfant. L'opération d'entreposage se termine avant que clone() retourne le contrôle à l'espace utilisateur.
CLONE_FILES Linux 2.0 Cette constante permet d'indiquer que le processus appelant et le processus enfant partagent la même table de descripteur de fichier. Tout descripteur de fichier créé par le processus appelant ou par le processus enfant est également valide dans l'autre processus. De même, si l'un des processus ferme un descripteur de fichier ou modifie ses indicateurs associés (à l'aide de l'opération F_SETFD de fcntl), l'autre processus est également affecté. Si un processus partageant une table de descripteurs de fichier appelle execve, sa table de descripteur de fichier est dupliquée (non partagée).
CLONE_FS Linux 2.0 Cette constante permet d'indiquer que l'appelant et le processus enfant partagent le mêmes informations sur le système de fichiers. Cela inclut la racine du système de fichiers, le répertoire de travail en cours et le umask. Tout appel à chroot, chdir ou umask effectué par le processus d'appel ou le processus de l'enfant affecte également l'autre processus.
CLONE_IO Linux 2.6.25 Cette constante permet d'indiquer que le nouveau processus partage un contexte d'entrée/sortie avec le processus appelant. Si ce drapeau n'est pas défini, alors (comme avec fork) le nouveau processus a son propre contexte d'entrée/sortie. Le contexte d'entrée/sortie est à la portée d'entrée/sortie du planificateur de disque (c'est-à-dire, ce que le planificateur d'entrée/sortie utilise pour modéliser la planification des entrées/sorties d'un processus). Si les processus partagent le même contexte d'entrée/sortie, ils sont traités comme un seul par le planificateur d'entrée/sortie. En conséquence, ils partagent le temps de disque. Pour certains planificateurs d'entrée/sortie, si 2 processus partagent un contexte d'entrée/sortie, ils seront autorisés à entrelacer leur accès au disque. Si plusieurs processus léger effectuent des entrées/sorties au nom du même processus (aio_read, par exemple), ils doivent utiliser CLONE_IO pour obtenir de meilleures performances d'entrée/sortie. Si le noyau n'est pas configuré avec l'option CONFIG_BLOCK, cet indicateur de pas d'opération.
CLONE_NEWCGROUP Linux 4.6 Cette constante permet de créer le processus dans un nouvel espace de noms de groupe. Si ce drapeau n'est pas défini, alors (comme avec fork) le processus est créé dans les mêmes espaces de noms de groupe que le processus appelant. Ce drapeau est destiné à l'intégration de conteneurs. Seul un processus privilégié (CAP_SYS_ADMIN) peut employer CLONE_NEWCGROUP.
CLONE_NEWIPC Linux 2.6.19 Cette constante permet de créer le processus dans un nouvel espace de noms IPC. Si ce drapeau n'est pas défini, alors (comme avec fork), le processus est créé dans le même espace de noms IPC que le processus appelant. Ce drapeau est destiné à l'intégration de conteneurs.
CLONE_NEWNET Linux 2.6.24 Cette constante permet de créer le processus dans un nouvel espace de noms de réseau. Si ce drapeau n'est pas défini, alors (comme avec fork) le processus est créé dans le même espace de noms réseau que le processus appelant. Ce drapeau est destiné à l'intégration de conteneurs.
CLONE_NEWNS Linux 2.4.19 Cette constante permet de créer le processus dans un nouvel espace de noms de réseau. Si ce drapeau n'est pas défini, alors (comme avec fork) le processus est créé dans le même espace de noms réseau que le processus appelant. Ce drapeau est destiné à l'intégration de conteneurs.
CLONE_NEWPID Linux 2.6.24 Cette constante permet de créer le processus dans un nouvel espace de noms PID. Si ce drapeau n'est pas défini, alors (comme avec fork) le processus est créé dans le même espace de noms PID que le processus appelant. Ce drapeau est destiné à l'intégration de conteneurs.
CLONE_NEWUSER Linux 2.6.23 Cette constante permet de créer le processus dans un nouvel espace de noms d'utilisateur. Si ce drapeau n'est pas défini, alors (comme avec fork) le processus est créé dans le même espace de noms utilisateur que le processus appelant.
CLONE_NEWUTS Linux 2.6.19 Cette constante permet de créer le processus dans un nouvel espace de noms UTS, dont les identificateurs sont initialisés en dupliquant les identificateurs à partir de l'espace de noms UTS du processus appelant. Si ce drapeau n'est pas défini, alors (comme avec fork) le processus est créé dans le même espace de noms UTS que le processus appelant. Ce drapeau est destiné à l'intégration de conteneurs.
CLONE_PARENT Linux 2.3.12 Cette constante permet d'indiquer que le parent du nouvel enfant (tel que renvoyé par getppid) sera le même que celui du processus appelant.
CLONE_PARENT_SETTID Linux 2.5.49 Cette constante permet d'entreposer l'identificateur de processus léger à du paramètre ptid dans la mémoire du parent.
CLONE_PID Linux 2.0 à 2.5.15 Cette constante permet d'indiquer que le processus enfant est créé avec le même identificateur de processus que le processus appelant. C'est bon pour le piratage du système, mais pas pour une utilisation. A partir de Linux 2.3.21, ce drapeau ne peut être spécifié que par le processus de démarrage du système (PID 0). Le drapeau a complètement disparu des sources du noyau dans Linux 2.5.16. Depuis lors, le noyau ignore silencieusement ce bit s'il est spécifié dans les drapeaux.
CLONE_PTRACE Linux 2.2 Cette constante permet d'indiquer que le processus appelant est tracé, et qu'il tracera également l'enfant (voir ptrace).
CLONE_SETTLS Linux 2.5.32 Cette constante permet d'indiquer que le descripteur TLS (Thread Local Storage) est défini sur NEWTLS.
CLONE_SIGHAND Linux 2.0 Cette constante permet d'indiquer que le processus appelant et le processus enfant partagent la même table de gestionnaires de signaux. Si le processus appelant ou le processus enfant appelle sigaction pour modifier le comportement associé à un signal, le comportement est également modifié dans l'autre processus. Cependant, le processus appelant et les processus enfants ont toujours des masques de signaux distincts et des ensembles de signaux en attente. Ainsi, l'un d'eux peut bloquer ou débloquer des signaux en utilisant sigprocmask sans affecter l'autre processus.
CLONE_STOPPED Linux 2.6.0 à 2.6.38 Cette constante permet d'indiquer que l'enfant est initialement arrêté (comme s'il recevait un signal SIGSTOP) et doit être repris en lui envoyant un signal SIGCONT. Ce drapeau a été abandonné à partir de Linux 2.6.25 et a été complètement supprimé dans Linux 2.6.38. Depuis lors, le noyau l'ignore silencieusement sans erreur. À partir de Linux 4.6, le même bit a été réutilisé pour l'indicateur CLONE_NEWCGROUP.
CLONE_SYSVSEM Linux 2.5.10 Cette constante permet d'indiquer que l'enfant et le processus appelant partagent une seule liste de valeurs d'ajustement de sémaphore System V (semadj) (voir semop). Dans ce cas, la liste partagée accumule des valeurs semadj dans tous les processus partageant la liste, et les ajustements de sémaphore sont effectués uniquement lorsque le dernier processus partageant la liste se termine (ou cesse de partager la liste en utilisant unshare). Si ce drapeau n'est pas défini, alors l'enfant a une liste séparée de semadj étant initialement vide.
CLONE_THREAD Linux 2.4.0 Cette constante permet d'indiquer que l'enfant est placé dans le même groupe de processus léger que le processus appelant. Pour rendre le reste de la discussion de CLONE_THREAD plus lisible, le terme «processus léger» est utilisé pour faire référence aux processus dans un groupe de processus léger.
CLONE_UNTRACED Linux 2.5.46 Cette constante permet d'indiquer qu'un processus de suivi ne peut pas forcer CLONE_PTRACE sur ce processus enfant.
CLONE_VFORK Linux 2.2 Cette constante permet d'indiquer que l'exécution du processus appelant est suspendue jusqu'à ce que l'enfant libère ses ressources de mémoire virtuelle via un appel à execve ou _exit (comme avec vfork).
CLONE_VM Linux 2.0 Cette constante permet d'indiquer que le processus appelant et le processus enfant s'exécutent dans le même espace mémoire. En particulier, les écritures mémoire effectuées par le processus appelant ou par le processus enfant sont également visibles dans l'autre processus. De plus, toute cartographie ou décartographie de mémoire effectué avec mmap ou munmap par le processus enfant ou appelant affecte également l'autre processus.
arg Ce paramètre permet d'indiquer les paramètres de la fonction fn.
ptid Ce paramètre permet d'indiquer l'identificateur parent du processus léger.
ctid Ce paramètre permet d'indiquer l'identificateur enfant du processus léger.

Description

Cette fonction permet de créer un processus enfant.

Remarques

Légende

    Cette couleur permet d'indiquer que la fonction est obsolète ou abandonné par la plupart des distributions.


Dernière mise à jour : Dimanche, le 21 février 2016