NOM
unshare - désassocier certaines parties du contexte d’exécution
SYNOPSIS
#define _GNU_SOURCE
#include <sched.h>
int unshare(int flags);
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 mme 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
clone(2), fork(2), vfork(2), Documentation/unshare.txt
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
http://www.kernel.org/doc/man-pages/.
TRADUCTION
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
francophone de traduction de Debian.
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande « man -L C <section> <page_de_man> ».