Linux |
CentOS 5.3 |
|
unshare(2) |
unshare − Dissocier les parties du contexte d’exécution d’un processus. |
#include <sched.h> int unshare(int flags); |
unshare() permet à un processus de dissocier les parties de son contexte d’exécution qui sont actuellement partagées avec d’autres processus. Une partie du contexte d’exécution, comme l’espace nom, est implicitement partagée lorsqu’un processus est créé avec fork(2) ou vfork(2), pendant que d’autres parties, comme la mémoire virtuelle, peuvent être partagées par une demande explicite lors de la création d’un processus avec clone(2). La principale utilisation de unshare() est de permettre à un processus de contrôler son contexte d’exécution partagé sans créer de nouveau processus. L’argument flags est un masque de bits qui spécifie quelles parties du contexte d’exécution ne devraient pas être partagées. Cet argument est un OU binaire de zéro ou plusieurs des constantes suivantes : |
CLONE_FILES |
Inverser l’effet de l’attribut CLONE_FILES de clone(2). Ne pas partager la table des descripteurs de fichier, ainsi, le processus appelant ne partagera plus ses descripteurs de fichiers avec les autres processus. |
CLONE_FS |
Inverser l’effet de l’attribut CLONE_FS de clone(2). Ne pas partager les attributs du système de fichiers, ainsi, le processus appelant ne partagera plus son répertoire racine, son répertoire courant ou ses attributs umask avec les autres processus. chroot(2), chdir(2), ou umask(2) |
CLONE_NEWNS |
Cet attribut a le même effet que l’attribut CLONE_NEWNS de clone(2). Ne pas partager l’espace nom, ainsi, le processus appelant a une copie privée de son espace nom qui n’est pas partagée avec les autres processus. Spécifier cet attribut implique automatiquement CLONE_FS. |
Si flags vaut zéro, unshare() est une non-opération ; aucune modification ne sera effectuée dans le contexte d’exécution du processus. |
S’il réussit, l’appel renvoie 0. S’il échoue, il renvoie −1 et écrit errno en conséquence. |
EPERM |
flags spécifiait CLONE_NEWNS mais le processus appelant n’était pas privilégié (n’avait pas la capacité CAP_SYS_ADMIN). |
||
ENOMEM |
Imposssible d’allouer suffisamment de mémoire pour copier les parties du contexte de l’appelant qui ne doivent pas être partagées. |
||
EINVAL |
Un bit invalide a été spécifié dans flags. |
L’appel système unshare() est spécifique à Linux. |
L’appel système unshare() a été ajouté à Linux dans le noyau 2.6.16. Ce ne sont pas tous les attributs du processus qui peuvent être partagés lorsqu’un nouveau processus est créé avec Not all of the process attributes that can be shared when a new process is created using clone(2) can be unshared using unshare(). En particulier, dans le noyau 2.6.16, unshare() n’implémente pas les attributs qui inverse les effets de CLONE_SIGHAND, CLONE_SYSVSEM, CLONE_THREAD ou CLONE_VM. De telles fonctionnalités pourront être ajoutées dans le futur, si cela est nécessaire. |
clone(2), fork(2), vfork(2), Documentation/unshare.txt |
Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 28 juillet 2006 et révisée le 11 août 2006. L’équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=en man 2 unshare ». N’hésitez pas à signaler à l’auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel. |
unshare(2) |