Loading

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);

       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 key n’est pas IPC_PRIVATE, aucune file
       de messages n’est associée à key, et IPC_CREAT  a  été  introduit  dans
       msgflg.

       Si  msgflg  indique  à  la  fois  IPC_CREAT  et IPC_EXCL et une file de
       messages est déjà associée à key, msgget() échoue en positionnant errno
       à  EEXIST.  Ceci  est  similaire  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 (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  (mode)  dans  les appels
       open(2). (Les permissions d’exécution ne sont pas utilisées).

       Pendant la création, l’appel système initialise  la  structure  système
       msqid_ds (voir msgctl(2)) 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’identifiant  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

       En cas d’échec, errno prend l’une des valeurs suivantes :

       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
              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 Le  système  doit créer une file de messages, 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 (sous Linux,
              cette limite peut être consultée et modifiée  grâce  au  fichier
              /proc/sys/kernel/msgmni).

   Notes sur 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)

COLOPHON

       Cette page fait partie de  la  publication  3.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

       Veuillez  signaler  toute  erreur   de   traduction   en   écrivant   à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document
       en utilisant la commande « man -L C <section> <page_de_man> ».