MSGGET(2)          Manuel du programmeur Linux          MSGGET(2)


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 mes­
       sages associée à la cle key.  Une nouvelle  file  de  mes­
       sages  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  struc­
       ture 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.




Linux                      8 Avril 1997                         1





MSGGET(2)          Manuel du programmeur Linux          MSGGET(2)


       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'ientificateur de la file de messages  (un
       entier positif), s'il réussit.  En cas d'échec -1 est ren­
       voyé 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 per­
                  missions 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  struc­
                  tures 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.

BUGS
       l'utilisation de IPC_PRIVATE n'empêche pas les autres pro­
       cessus d'avoir accès à la file de messages allouée.

       Comme pour les fichiers, il n'y a actuellement pas de pos­
       sibilité 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.




Linux                      8 Avril 1997                         2





MSGGET(2)          Manuel du programmeur Linux          MSGGET(2)


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.
















































Linux                      8 Avril 1997                         3