table of contents
UNSHARE(2) | Manuel du programmeur Linux | UNSHARE(2) |
NOM¶
unshare - désassocier certaines parties du contexte d'exécution
SYNOPSIS¶
#define _GNU_SOURCE #include <sched.h> int unshare(int flags);
DESCRIPTION¶
unshare() permet à un processus de désassocier certaines 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 de noms de montage, est implicitement partagé quand un processus est créé avec fork(2) ou vfork(2), alors que d'autres parties, comme la mémoire virtuelle, peuvent être partagées en faisant explicitement la demande lors de la création d'un processus avec clone(2).
L'intérêt principal de unshare() est de permettre à un processus de contrôler son contexte d'exécution partagé sans avoir à créer un nouveau processus.
L'argument flags est un masque qui indique quelles parties du contexte d'exécution doivent être désassociées. Cet argument est construit comme un OU binaire entre les constantes suivantes :
- CLONE_FILES
- A l'effet inverse de l'attribut CLONE_FILES de clone(2). Supprimer le partage de la table des descripteurs de fichier, afin que le processus appelant ne partage plus ses descripteurs de fichier avec d'autres processus.
- CLONE_FS
- Annuler l'effet de l'attribut CLONE_FS de clone(2). Départager les attributs de système de fichiers, afin que le processus appelant ne partage plus son répertoire racine, son répertoire courant et sa valeur d'umask avec d'autres processus. Voir chroot(2), chdir(2), umask(2).
- CLONE_NEWNS
- Cet attribut a le même effet que l'attribut CLONE_NEWNS de clone(2). Départager l'espace de noms de montage, afin que le processus appelant ait une copie privée de son espace de noms qui n'est pas partagée avec d'autres processus. L'utilisation de cet attribut implique CLONE_FS.
Si flags est nul, unshare() n'a aucun effet : le contexte d'exécution du processus appelant n'est pas modifié.
VALEUR RENVOYÉE¶
S'il réussit l'appel renvoie zéro, sinon il renvoie -1 et remplit errno avec le code d'erreur.
ERREURS¶
- EINVAL
- Un attribut invalide est indiqué dans flags.
- ENOMEM
- Impossible d'allouer suffisamment de mémoire pour copier les parties du contexte de l'appelant qui doivent être rendues privées.
- EPERM
- CLONE_NEWNS est utilisé dans flags, mais le processus appelant n'est pas privilégié (ne possède pas la capacité CAP_SYS_ADMIN).
VERSIONS¶
L'appel système unshare() est apparu dans Linux 2.6.16.
CONFORMITɶ
L'appel système unshare() est spécifique à Linux.
NOTES¶
Tous les attributs de processus qui peuvent être partagés lorsqu'un processus est créé avec clone(2) ne peuvent pas être rendus privés avec unshare(). En particulier, dans le noyau 2.6.16, unshare() n'implémente pas de drapeaux ayant l'effet inverse de CLONE_SIGHAND, CLONE_SYSVSEM, CLONE_THREAD ou CLONE_VM. Cette fonctionnalité pourra être ajoutée plus tard si nécessaire.
VOIR AUSSI¶
COLOPHON¶
Cette page fait partie de la publication 3.23 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse <URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <URL:http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <URL:http://alioth.debian.org/projects/perkamon/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à <perkamon-l10n-fr@lists.alioth.debian.org>.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».
20 novembre 2008 | Linux |