Provided by: manpages-fr-dev_2.64.1-1_all bug

NOM

       shm_open,  shm_unlink - Créer/ouvrir et supprimer des objets de mémoire
       partagés POSIX

SYNOPSIS

       #include <sys/types.h>
       #include <sys/mman.h>
       #include <fcntl.h> /* Pour les constantes O_* */

       int shm_open(const char *nom, int oflag, mode_t mode);

       int shm_unlink(const char *nom);

       Ajouter -lrt à l’édition des liens.

DESCRIPTION

       La fonction shm_open() crée et ouvre un nouvel objet de mémoire partagé
       POSIX,   ou  ouvre  un  objet  existant.  Il  s’agit  d’un  descripteur
       utilisable par d’autres processus avec mmap(2) pour  projeter  la  même
       région   mémoire.   La   fonction   shm_unlink()   réalise  l’opération
       complémentaire en supprimant l’objet créé précédemment par  shm_open().

       Le  fonctionnement  de  shm_open()  est analogue à celui de open(2). On
       indique le nom  d’un  segment  mémoire  à  créer  ou  ouvrir.  Pour  un
       fonctionnement  portable,  le  nom doit commencer par une barre oblique
       « / » et ne pas en contenir d’autres.

       oflag est un masque de bit associant l’une des deux constantes O_RDONLY
       ou O_RDWR et un ou plusieurs des attributs décrits ci-après.

       O_RDONLY   Ouvrir l’objet en lecture seule. Un tel objet ne pourra être
                  projeté en mémoire avec mmap(2) qu’avec l’accès (PROT_READ).

       O_RDWR     Ouvrir l’objet en lecture et écriture.

       O_CREAT    Créer   l’objet  de  mémoire  partagée  s’il  n’existe  pas.
                  L’utilisateur  et  le  groupe   propriétaires   de   l’objet
                  proviennent  des IDs effectifs du processus appelant, et les
                  bits de permission sont fixés  en  fonction  des  9 bits  de
                  poids faible de mode, hormis les bits qui sont fixés dans le
                  masque de création du processus (voir umask(2)) et qui  sont
                  effacés.  Un  jeu  de constantes utilisables pour définir le
                  mode est décrit dans open(2).

                  Un nouvel objet de mémoire partagé  a  une  taille  initiale
                  nulle  -  on  la  fixe en utilisant ftruncate(2). Les octets
                  d’un  objet   mémoire   partagé   nouvellement   créé   sont
                  automatiquement initialisés à zéro.

       O_EXCL     Si  O_CREAT était précisé et si un objet de mémoire partagée
                  avec le même nom existait  déjà,  renvoyer  une  erreur.  La
                  vérification  et  l’existence et la création éventuelle sont
                  réalisées de manière atomique.

       O_TRUNC    Si l’objet de mémoire partagée existait, tronquer sa  taille
                  à zéro.

       Si  elle réussit, la fonction shm_open() renvoie un nouveau descripteur
       décrivant l’objet de mémoire partagée. Le descripteur est assuré d’être
       le  plus  petit  numéro  disponible  dans  la table des descripteurs du
       processus. L’attribut FD_CLOEXEC (voir fcntl(2))  sera  activé  sur  le
       descripteur de fichier.

       Le  descripteur  est  utilisé  normalement pour les appels ultérieurs à
       ftruncate(2) (pour un objet nouvellement créé)  et  mmap(2).  Après  un
       appel  à  mmap(2)  le  descripteur  peut  être  fermé  sans affecter la
       projection mémoire.

       Le fonctionnement de shm_unlink() est analogue à celui  de  unlink(2) :
       il  supprime  le  nom  d’un objet de mémoire partagée, et, une fois que
       tous les processus ont supprimé leur projection en mémoire,  libère  et
       détruit  le  contenu  de la portion de mémoire. Après un appel réussi à
       shm_unlink(), les tentatives d’appeler  shm_open()  avec  le  même  nom
       échoueront  (sauf  si  O_CREAT est spécifié, auquel cas un nouvel objet
       distinc est créé).

VALEUR RENVOYÉE

       S’il réussit, l’appel shm_open() renvoie un descripteur de fichier  non
       négatif.  S’il  échoue,  shm_open()  renvoie -1. shm_unlink() renvoie 0
       s’il réussit ou -1 en cas d’erreur.

ERREURS

       Lors d’un  échec,  errno  indique  la  cause  de  l’erreur.  Les  codes
       possibles dans errno sont les suivants :

       EACCES Interdiction  d’utiliser  shm_unlink()  sur  l’objet  de mémoire
              partagée.

       EACCES shm_open() refusée pour le nom dans le mode indiqué, ou  O_TRUNC
              a  été  réclamé et l’appelant n’a pas les permissions d’écriture
              sur l’objet.

       EEXIST O_CREAT et O_EXCL étaient réclamés dans shm_open() et  un  objet
              de mémoire partagée du même nom existait déjà.

       EINVAL L’argument nom de shm_open() était invalide.

       EMFILE Le processus a déjà ouvert son nombre maximal de fichiers.

       ENAMETOOLONG
              La longueur du nom dépasse PATH_MAX.

       ENFILE La  limite  du nombre total de fichiers ouverts sur le système a
              été atteinte.

       ENOENT Tentative d’ouvrir avec shm_open() un nom qui n’existe pas, sans
              attribut O_CREAT.

       ENOENT Tentative d’utiliser shm_unlink() sur un nom qui n’existe pas.

VERSIONS

       Ces fonctions sont fournies depuis la glibc 2.2.

CONFORMITÉ

       POSIX.1-2001.

       POSIX.1-2001 indique que le groupe propriétaire d’un objet nouvellement
       créé utilise soit l’ID de groupe du processus appelant, soit un « ID de
       groupe par défaut défini par le système ».

NOTES

       POSIX  ne  précise  pas  le  comportement de la combinaison O_RDONLY et
       O_TRUNC.  Sous  Linux,  la  troncature  aura  lieu  -  cela  n’est  pas
       nécessairement le cas sous d’autres systèmes Unix.

       L’implémentation  sous  Linux  2.4 des objets de mémoire partagée POSIX
       utilise un système de fichiers dédiés, monté en principe sous /dev/shm.

VOIR AUSSI

       close(2),   fchmod(2),  fchown(2),  fcntl(2),  fstat(2),  ftruncate(2),
       mmap(2), open(2), umask(2)

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         Nicolas         François
       <nicolas.francois@centraliens.net>    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> ».