shmop | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
NOM | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
SYNOPSIS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
#include <sys/types.h> #include <sys/shm.h>
void *shmat ( int shmid, const void * shmaddr, int shmflg);
DESCRIPTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Si SHM_RDONLY est indiqué dans shmflg, le segment est attaché en lecture seulement, et le processus doit disposer de la permission de lecture dessus. Sinon le segment est attaché en lecture et écriture et le processus doit disposer des deux permissions d'accès. Il n'y a pas de notion d'écriture seule pour les segments de mémoire partagée.
L'option (spécifique à Linux) SHM_REMAP peut être ajoutée dans shmflg pour indiquer que la projection du segment doit remplacer une projection précédente dans l'intervalle commençant en shmaddr et s'étendant sur la taille du segment. (Normalement une erreur EINVAL se produirait si une projection existait déjà dans l'intervalle indiqué). Dans ce cas, shmaddr ne doit pas être NULL.
La valeur brk(2) du processus appelant n'est pas altérée par l'attachement. Le segment est automatiquement détaché quand le processus se termine. Le même segment peut être attaché à la fois en lecture seule et en lecture/écriture. Il peut également être attaché en plusieurs endroits de l'espace d'adressage du processus.
Si shmat() réussit, les membres de la structure shmid_ds (voir shmctl(2)) associée au segment de mémoire partagée sont mis à jour ainsi :
Quand shmdt() réussit, les membres de la structure shmid_ds associée au segment de mémoire partagée sont mis à jour ainsi :
Après un fork(2) le fils hérite des segments de mémoire partagée.
Après un execve(2) tous les segments de mémoire partagée sont détachés (pas détruits).
Lors d'un exit_(2) tous les segments de mémoire partagée sont détachés (pas détruits).
VALEUR RENVOYÉE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
ERREURS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
shmdt() :
CONFORMITÉ | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
NOTES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Sous Linux, il est possible d'attacher un segment de mémoire partagée même s'il est déjà marqué pour être détruit. Toutefois, POSIX.1-2001 n'indique pas ce comportement et bien d'autres implémentations ne le supportent pas.
Les paramètres système suivants influent sur shmat() :
L'implémentation n'a pas de limite intrinsèque pour le nombre maximal de segments de mémoire partagée par processus. (SHMSEG).
VOIR AUSSI | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
TRADUCTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 16 octobre 1996 et révisée le 6 juin 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 shmop ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Sommaire | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
Table des mots clés | Début | Suivant | Sommaire | Préc.page.lue | Accueil |