Provided by: manpages-fr_1.67.0-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>

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

       int shm_unlink(const char *nom);

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édement 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 un slash (/)  et  ne
       pas en contenir d’autres.

       oflag est un masque de bit associant l’une des deux constantes O_RDONLY
       ou O_RWDR 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  sont  fixés
              comme avec l’appel open(2), et les bits de permission sont fixés
              en fonction des 9 bits de poids faible de mode, hormis les  bits
              qui  sont  fixé  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 renvoir 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 shm_open refusé 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.

       EACCES Interdicton  d’utiliser  shm_unlink  sur  l’objet   de   mémoire
              partagée.

       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 dans le shm_open était invalide.

       EMFILE Le provessus 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 non qui n’existe pas, sans
              attribut O_CREAT.

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

NOTES

       Ces fonctions sont fournies depuis la GlibC 2.2. Les programmes qui les
       invoquent  doivent  fournir l’argument -lrt lors de la compilation avec
       cc afin d’avoir l’édition des liens  avec  la  bibliothèque  nécessaire
       (temps-réel).

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

CONFORMITÉ

       POSIX 1003.1 (2001).

VOIR AUSSI

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

TRADUCTION

       Christophe Blaess, 2003.