MSGGET
Section: Manuel du programmeur Linux (2) Updated: 18 juillet 2003 Index
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
NOTES
BOGUES
CONFORMITÉ
VOIR AUSSI
TRADUCTION
NOM
msgget - Obtenir un identificateur de file de messages.
SYNOPSIS
DESCRIPTION
Cette fonction renvoie l'identificateur 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 si
aucune file de message n'est associée à
key,
et si la valeur
IPC_CREAT
a été introduite dans
msgflg
(c'est à dire
msgflg&IPC_CREAT
non nul).
La présence des champs
IPC_CREAT
et
IPC_EXCL
dans
msgflg
joue le même rôle, par rapport à l'existence de
la file de messages, que la présence des champs
O_CREAT
et
O_EXCL
dans l'argument
mode
de l'appel système
open(2) :
La fonction
msgget
échouera si
msgflg
indique à la fois
IPC_CREAT
et
IPC_EXCL
et si une file de messages existe déjà associée à
key.
Lors de la création, les 9 bits de poids faibles de l'argument
msgflg
définissent les permissions d'accès à la file de message
(pour le propriétaire, le groupe, et les autres) avec le
même format et la même signification que les permissions
d'accès dans les appels
open(2)
ou
creat(2)
(bien que la permission d'exécution ne soit pas utilisée).
Pendant la création, l'appel système initialise la structure
système
msqid_ds
de la file de messages comme suit :
-
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 sur cette
file.
- EEXIST
-
Une file de messages existe associée à la clé
key
et
msgflg
réclame à 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
-
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.
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.
BOGUES
L'utilisation de
IPC_PRIVATE
n'empêche pas les autres processus d'avoir accès à la file
de messages allouée. Le nom IPC_PRIVATE a été mal choisi, ICP_NEW aurait été mieux.
CONFORMITÉ
SVr4, SVID. SVr4 ne documente pas le code d'erreur EIDRM.
Jusqu'à la version 2.3.20, Linux renvoyait EIDRM pour un
msgget
sur une file de messages prête à être supprimée.
VOIR AUSSI
TRADUCTION
Christophe Blaess, 1996-2003.
|