Index général des pages de man   Index Section man 2   Table des Matières de msgget   Imprime la page de man msgget en mode Texte   Recherche dans les pages de man   Page de man en français      Fonctions du système (section 2)

msgget

 
  

Nom

msgget - Obtenir un identificateur 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

Cette fonction renvoie l'identificateur de la file de messages associée à la cle 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 role, 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 controlé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.
EIDRM
la file de messages est prête à être supprimée.
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.

Comme pour les fichiers, il n'y a actuellement pas de possibilité intrinsèque d'assurer l'exclusivité d'accès à une file de messages pour un processus.

Réclamer à la fois IPC_CREAT et IPC_EXCL dans msgflg garantit seulement qu'une nouvelle file sera créée, mais n'implique pas un accès exclusif à la file.

Conformité

SVr4, SVID. SVr4 ne documente pas le code d'erreur EIDRM.

Voir Aussi

ftok(3) , ipc(5) , msgctl(2) , msgsnd(2) , msgrcv(2) .

Traduction

Christophe Blaess, 1997.


Table des matières


Haut de page

© 1996-2000 Adaptation française "Christophe Blaess"