Provided by:
manpages-fr-dev_3.32d0.2p4-1_all 
NOM
shm_open, shm_unlink - Creer/ouvrir et supprimer des objets de memoire
partages 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'edition des liens avec l'option -lrt.
DESCRIPTION
La fonction shm_open() cree et ouvre un nouvel objet de memoire partage
POSIX, ou ouvre un objet existant. Il s'agit d'un descripteur
utilisable par d'autres processus avec mmap(2) pour projeter la meme
region memoire. La fonction shm_unlink() realise l'operation
complementaire en supprimant l'objet cree precedemment par shm_open().
Le fonctionnement de shm_open() est analogue a celui de open(2). nom
indique l'objet memoire partage a creer ou ouvrir. Pour un
fonctionnement portable, un objet memoire partage doit etre identifie
par un nom au format /un_nom ; c'est a dire une chaine terminee par un
caractere nul d'au plus NAME_MAX (c'est-a-dire 255) caractere,
commencant par une barre oblique (<< / >>), suivi d'un caractere ou
plus, ces derniers n'etant 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 decrits ci-apres.
O_RDONLY Ouvrir l'objet en lecture seule. Un tel objet ne pourra etre
projete en memoire avec mmap(2) qu'avec l'acces (PROT_READ).
O_RDWR Ouvrir l'objet en lecture et ecriture.
O_CREAT Creer l'objet de memoire partagee s'il n'existe pas.
L'utilisateur et le groupe proprietaires de l'objet
proviennent des IDs effectifs du processus appelant, et les
bits de permission sont fixes en fonction des 9 bits de
poids faible de mode, hormis les bits qui sont fixes dans le
masque de creation du processus (consultez umask(2)) et qui
sont effaces. Un jeu de constantes utilisables pour definir
le mode est decrit dans open(2) (les definitions symboliques
de ces constantes peuvent etre obtenues en incluant
<sys/stat.h>).
Un nouvel objet de memoire partage a une taille initiale
nulle - on la fixe en utilisant ftruncate(2). Les octets
d'un objet memoire partage nouvellement cree sont
automatiquement initialises a zero.
O_EXCL Si O_CREAT etait precise et si un objet de memoire partagee
avec le meme nom existait deja, renvoyer une erreur. La
verification et l'existence et la creation eventuelle sont
realisees de maniere atomique.
O_TRUNC Si l'objet de memoire partagee existait, tronquer sa taille
a zero.
Les definitions des valeurs de ces attributs peuvent etre obtenues en
incluant <fcntl.h>.
Si elle reussit, la fonction shm_open() renvoie un nouveau descripteur
decrivant l'objet de memoire partagee. Le descripteur est assure d'etre
le plus petit numero disponible dans la table des descripteurs du
processus. L'attribut FD_CLOEXEC (consultez fcntl(2)) sera active sur
le descripteur de fichier.
Le descripteur est utilise normalement pour les appels ulterieurs a
ftruncate(2) (pour un objet nouvellement cree) et mmap(2). Apres un
appel a mmap(2) le descripteur peut etre ferme sans affecter la
projection memoire.
Le fonctionnement de shm_unlink() est analogue a celui de unlink(2) :
il supprime le nom d'un objet de memoire partagee, et, une fois que
tous les processus ont supprime leur projection en memoire, libere et
detruit le contenu de la portion de memoire. Apres un appel reussi a
shm_unlink(), les tentatives d'appeler shm_open() avec le meme nom
echoueront (sauf si O_CREAT est specifie, auquel cas un nouvel objet
distinc est cree).
VALEUR RENVOY'EE
S'il reussit, l'appel shm_open() renvoie un descripteur de fichier non
negatif. S'il echoue, shm_open() renvoie -1. shm_unlink() renvoie 0
s'il reussit ou -1 en cas d'erreur.
ERREURS
Lors d'un echec, 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 memoire
partagee.
EACCES shm_open() refusee pour le nom dans le mode indique, ou O_TRUNC
a ete reclame et l'appelant n'a pas les permissions d'ecriture
sur l'objet.
EEXIST O_CREAT et O_EXCL etaient reclames dans shm_open() et un objet
de memoire partagee du meme nom existait deja.
EINVAL L'argument nom de shm_open() etait invalide.
EMFILE Le processus a deja ouvert le nombre maximal de fichiers.
ENAMETOOLONG
La longueur du nom depasse PATH_MAX.
ENFILE La limite du nombre total de fichiers ouverts sur le systeme a
ete 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'E
POSIX.1-2001.
POSIX.1-2001 indique que le groupe proprietaire d'un objet nouvellement
cree utilise soit l'ID de groupe du processus appelant, soit un << ID
de groupe par defaut defini par le systeme >>.
NOTES
POSIX ne precise pas le comportement de la combinaison O_RDONLY et
O_TRUNC. Sous Linux, la troncature aura lieu - cela n'est pas
necessairement le cas sous d'autres systemes UNIX.
L'implementation sous Linux 2.4 des objets de memoire partagee POSIX
utilise un systeme de fichiers dedies, monte 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.32 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe de traduction
francophone au sein du projet perkamon
<URL:http://perkamon.alioth.debian.org/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003),
Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Nicolas
Francois et l'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.
Linux 25 fevrier 2009 SHM_OPEN(3)