Linux

CentOS 5.3

unshare(2)


UNSHARE

NOM

unshare − Dissocier les parties du contexte d’exécution d’un processus.

SYNOPSIS

#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 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.

VALEUR RENVOYÃE

S’il réussit, l’appel renvoie 0. S’il échoue, il renvoie −1 et écrit errno en conséquence.

ERREURS

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.

CONFORMITÃ

L’appel système unshare() est spécifique à Linux.

NOTES

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.

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 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)