MSGGET
Section : Manuel du programmeur Linux (
2)
Mise à jour de la version anglaise : 27 mai 2004
Index
Menu principal
NOM
msgget - Obtenir un identifiant de file de messages
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgget(key_t key, int msgflg);
DESCRIPTION
L'appel système
msgget()
renvoie l'identifiant de la file de
messages associée à la clé
key.
Une nouvelle file de messages est créée si
key
a la valeur
IPC_PRIVATE
ou bien si
n'est pas
IPC_PRIVATE,
aucune file de message n'est associée à
key,
et si la valeur
IPC_CREAT
a été introduite dans
msgflg.
Si
msgflg
indique à la fois
IPC_CREAT
et
IPC_EXCL
et si une file de messages associée à
key
existe déjà, la fonction
msgget()
échouera et
errno
contiendra la valeur
EEXIST.
(C'est analogue au comportement de
open(2)
avec la combinaison
O_CREAT | O_EXCL.
Lors de la création, les bits de poids faibles de l'argument
msgflg
définissent les permissions d'accès à la file de message.
Ces bits de permission ont le même format et la même signification
que les permissions indiquées dans l'argument
mode
de l'appel
open(2).
(Les permissions d'exécution ne sont pas utilisées).
Pendant la création, la structure de données associée
msqid_ds
est initialisée de la manière suivante :
-
msg_perm.cuid
et
msg_perm.uid
sont remplis avec l'UID effectif du processus appelant.
-
msg_perm.cgid
et
msg_perm.gid
sont remplis avec le GID effectif du processus appelant.
-
Les 9 bits de poids faibles de
msgflg
sont copiés dans les 9 bits de poids faibles de
msg_perm.mode.
-
msg_qnum,
msg_lspid,
msg_lrpid,
msg_stime
et
msg_rtime
sont fixés à 0.
-
msg_ctime
est rempli avec l'heure actuelle.
-
msg_qbytes
est rempli avec la limite système
MSGMNB.
Si la file de message existe déjà, les permissions d'accès sont
contrôlées, et une vérification est faite pour voir si la file
est prête à être détruite.
VALEUR RENVOYÉE
msgget()
renvoie l'identificateur de la file de messages (un entier positif),
s'il réussit.
En cas d'échec -1 est renvoyé et
errno
contient le code d'erreur.
ERREURS
- EACCES
-
Une file de messages existe associée à la clé
key,
mais le processus appelant n'a pas de permissions pour accéder
à cette file et n'a pas la capacité
CAP_IPC_OWNER.
- EEXIST
-
Une file de messages existe associée à la clé
key
et
msgflg
indique à la fois
IPC_CREAT
et
IPC_EXCL.
- ENOENT
-
Aucune file de messages n'existe associée à la clé
key
et
msgflg
ne contient pas
IPC_CREAT.
- ENOMEM
-
Le système doit créer une file de message mais n'a pas
assez de mémoire pour les nouvelles structures de données.
- ENOSPC
-
Le nombre maximum de files de messages sur le système
(MSGMNI)
est atteint.
CONFORMITÉ
SVr4, POSIX.1-2001.
NOTES
IPC_PRIVATE
n'est pas destiné au champ
msgflg
mais est du type
key_t.
Si cette valeur spéciale est fournie à la place de
key,
l'appel système ignorera tout sauf les 9 bits de poids faibles de
msgflg
et créera une nouvelle file de messages.
La limite système concernant les files de messages et affectant
msgget()
est
- MSGMNI
-
Nombre maximum de files de messages sur le système : dépendant de la
politique (sous Linux, cette limite peut être lue et modifiée via
/proc/sys/kernel/msgmni).
Notes Linux
Jusqu'à la version 2.3.20, Linux renvoyait
EIDRM
pour un
msgget()
sur une file de messages prête à être supprimée.
BOGUES
Le choix du nom
IPC_PRIVATE
est malheureux,
IPC_NEW
aurait mieux décrit sa fonction.
VOIR AUSSI
msgctl(2),
msgrcv(2),
msgsnd(2),
ftok(3),
capabilities(7),
mq_overview(7),
svipc(7)
TRADUCTION
Ce document est une traduction réalisée par Christophe Blaess
<http://www.blaess.fr/christophe/> le 14 octobre 1996
et révisée le 17 juillet 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 msgget ».
N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute
erreur dans cette page de manuel.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- CONFORMITÉ
-
- NOTES
-
- Notes Linux
-
- BOGUES
-
- VOIR AUSSI
-
- TRADUCTION
-
Dernière mise à jour : 17 juillet 2008