UNSHARE
Section : Manuel du programmeur Linux (
2)
Mise à jour de la version anglaise : 26 juillet 2007
Index
Menu principal
NOM
unshare - Dissocier les parties du contexte d'exécution d'un processus
SYNOPSIS
#define _GNU_SOURCE
#include <sched.h>
int unshare(int flags);
DESCRIPTION
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 de noms, 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).
Le principal intérêt 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 de bits qui indique quelles parties du contexte d'exécution
ne doivent 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).
Supprimer le partage de la table des descripteurs de fichier, ainsi,
le processus appelant ne partagera plus ses descripteurs de fichier
avec d'autres processus.
- CLONE_FS
-
Inverser l'effet de l'attribut
CLONE_FS
de
clone(2).
Supprimer le partage des 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 d'autres processus.
Voir
chroot(2),
chdir(2)
ou
umask(2)
- CLONE_NEWNS
-
Cet attribut a le
même
effet que l'attribut
CLONE_NEWNS
de
clone(2).
Supprimer le partage de l'espace de noms, ainsi,
le processus appelant a 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 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.
VALEUR RENVOYÉE
Cet appel système renvoie 0 s'il réussit et -1 s'il échoue, auquel cas
errno
contient le code d'erreur.
ERREURS
- EINVAL
-
Un attribut invalide a été indiqué dans
flags.
- ENOMEM
-
Impossible d'allouer suffisamment de mémoire pour copier les parties
du contexte de l'appelant qui ne doivent pas être partagées.
- EPERM
-
flags
indiquait
CLONE_NEWNS
mais le processus appelant n'était pas privilégié
(n'avait pas la capacité
CAP_SYS_ADMIN).
VERSIONS
L'appel système
unshare()
a été ajouté au noyau Linux dans sa version 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 nouveau 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 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.
VOIR AUSSI
clone(2),
fork(2),
vfork(2),
Documentation/unshare.txt
TRADUCTION
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 24 juin 2008.
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=C man 2 unshare ».
N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute
erreur dans cette page de manuel.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- VERSIONS
-
- CONFORMITÉ
-
- NOTES
-
- VOIR AUSSI
-
- TRADUCTION
-
Dernière mise à jour : 24 juin 2008