Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

       unshare - Désassocier certaines parties du contexte d'exécution

SYNOPSIS

       #include <sched.h>

       int unshare(int flags);

   Conditions requises par la macro de test des fonctionnalités pour glibc (consultez feature_test_macros(7)) :

       unshare():
           À partir de glibc 2.14 :
               _GNU_SOURCE
           Avant glibc 2.14 :
               _BSD_SOURCE || _SVID_SOURCE
                   /* _GNU_SOURCE est également suffisant */

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  (chroot(2)),  son
              répertoire courant (chdir(2)) et sa valeur d'umask (umask(2)) avec d'autres processus.

       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é avec d'autres processus. 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_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.

       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.

       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.

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 3.8, unshare()  n'implémente
       pas  de  drapeaux  inversant  les effets de CLONE_SIGHAND, CLONE_THREAD ou CLONE_VM. Cette fonctionnalité
       pourra être ajoutée plus tard si nécessaire.

VOIR AUSSI

       clone(2), fork(2), kcmp(2), setns(2), vfork(2)

       Documentation/unshare.txt dans les sources du noyau Linux

COLOPHON

       Cette page fait partie de la publication 3.65 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> ».