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

NOM

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

SYNOPSIS

       #include <sys/mman.h>
       #include <sys/stat.h>        /* Pour les constantes des modes */
       #include <fcntl.h>           /* Pour les constantes O_* */

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

       int shm_unlink(const char *nom);

       Effectuez l'édition des liens avec l'option -lrt.

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).  nom  indique  l'objet
       mémoire  partagé  à  créer  ou  ouvrir.  Pour un fonctionnement portable, un objet mémoire
       partagé doit être identifié par  un  nom  au  format  /un_nom ;  c'est-à-dire  une  chaîne
       terminée  par un caractère nul d'au plus NAME_MAX (c'est-à-dire 255) caractère, commençant
       par une barre oblique (« / »), suivi d'un caractère ou plus, ces derniers n'étant pas  des
       barres obliques.

       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 définis en fonction des 9 bits de poids faible
                  de mode, hormis les bits qui  sont  définis  dans  le  masque  de  création  du
                  processus  (consultez  umask(2))  et  qui  sont  effacés.  Un jeu de constantes
                  utilisables pour définir le mode  est  décrit  dans  open(2)  (les  définitions
                  symboliques de ces constantes peuvent être obtenues en incluant <sys/stat.h>).

                  Un nouvel objet de mémoire partagé a une taille initiale nulle — elle peut être
                  définie avec 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.

       Les définitions des valeurs de ces attributs peuvent être obtenues en incluant <fcntl.h>.

       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 (consultez 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 distinct 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 le 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), shm_overview(7)

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). Nicolas  François  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> ».