NOM¶
unshare - Désassocier certaines parties du contexte d'exécution
SYNOPSIS¶
#define _GNU_SOURCE /* Consultez feature_test_macros(7) */
#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. Consultez chroot(2), chdir(2),
umask(2).
- CLONE_NEWIPC (depuis Linux 2.6.19)
- Cet attribut a le même effet que l'attribut
CLONE_NEWIPC de clone(2). Départager l'espace de noms
IPC System V, afin que le processus appelant ait une copie
privée de l'espace de noms IPC System V qui ne soit pas
partagée avec d'autres processus. L'utilisation de cet attribut
implique CLONE_SYSVSEM. L'utilisation de CLONE_NEWIPC
nécessite la capacité CAP_SYS_ADMIN.
- CLONE_NEWNET (depuis Linux 2.6.24)
- Cet attribut a le même effet que l'attribut
CLONE_NEWNET de clone(2). Départager l'espace de noms
de réseau, afin que le processus appelant soit déplacé dans
un nouvel espace de noms de réseau qui n'est pas partagée avec
d'autres processus. L'utilisation de CLONE_NEWNET nécessite la
capacité CAP_SYS_ADMIN.
- 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 ne soit pas partagée avec d'autres processus.
L'utilisation de cet attribut implique CLONE_FS. L'utilisation de
CLONE_NEWNS nécessite la capacité
CAP_SYS_ADMIN.
- CLONE_SYSVSEM (depuis Linux 2.6.26)
- Cet attribut inverse l'effet de l'attribut
CLONE_SYSVSEM de clone(2). Départager les valeurs
« undo » des sémaphores System V, afin que le
processus appelant ait une copie privée qui ne soit pas partagée
avec d'autres processus. L'utilisation de CLONE_SYSVSEM
nécessite la capacité CAP_SYS_ADMIN.
- CLONE_NEWUTS (depuis Linux 2.6.19)
- Cet attribut a le même effet que l'attribut
CLONE_NEWUTS de clone(2). Départager l'espace de noms
IPC UTS, afin que le processus appelant ait une copie privée de
l'espace de noms UTS qui ne soit pas partagée avec d'autres
processus. L'utilisation de CLONE_NEWUTS nécessite la
capacité CAP_SYS_ADMIN.
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
- Le processus appelant n'avait pas les privilèges
appropriés pour effectuer cette opération.
VERSIONS¶
L'appel système
unshare() est apparu dans Linux 2.6.16.
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 dans les sources du noyau Linux
COLOPHON¶
Cette page fait partie de la publication 3.44 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¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Christophe Blaess <
http://www.blaess.fr/christophe/> (1996-2003), Alain
Portal <
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 à
<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> ».