Provided by: manpages-fr_3.07.1-1_all bug

NOM

       mq_overview - Panorama des files de messages POSIX

DESCRIPTION

       Les  files  de  messages  POSIX permettent aux processus d’échanger des
       données sous forme de  messages.  Cette  API  est  distincte  de  celle
       fournie  par  les  files  de  messages  System V (msgget(2), msgsnd(2),
       msgrcv(2), etc.), mais propose des fonctionnalités similaires.

       Les files de messages sont créées et ouvertes en utilisant  mq_open(3).
       Cette  fonction  retourne  un  descripteur de file de messages (mqd_t),
       utilisé pour se  référer  à  la  file  de  messages  ouverte  dans  les
       prochains  appels.  Chaque  file de messages est distinguée par son nom
       sous la forme /un_nom. Deux processus peuvent opérer sur la  même  file
       en fournissant le même nom à mq_open(3).

       Les messages sont transférés à une file et récupérés depuis une file en
       utilisant mq_send(3)  et  mq_receive(3).  Lorsqu’un  processus  a  fini
       d’utiliser  la  file,  il la ferme en utilisant mq_close(3), et lorsque
       cette file  n’est  plus  nécessaire,  elle  peut  être  supprimée  avec
       mq_unlink(3).  Les  attributs  de la file peuvent être obtenus et (dans
       certains cas) modifiés en utilisant mq_getattr(3) et mq_setattr(3).  Un
       processus  peut  demander un avertissement asynchrone de l’arrivée d’un
       message sur une file auparavant vide en utilisant mq_notify(3).

       Un descripteur de file de messages est une référence à une  description
       dune  file  de  messages  ouverte  (voyez  open(2)).  Après un appel à
       fork(2), un processus fils hérite des copies des descripteurs  de  file
       de  messages  de  son  parent,  et  ces descripteurs réfèrent aux mêmes
       descriptions  de  files  de  messages  ouvertes  que  les  descripteurs
       correspondants  du  parent.  Les  descripteurs  correspondants  de deux
       processus  partagent  l’attribut  (mq_flags)  qui  est  associé  à   la
       description de la file de messages ouverte.

       Chaque  message  contient  une  priorit associée, et les messages sont
       toujours délivrés au processus de  réception  par  ordre  de  priorité.
       L’intervalle   de   priorité   des   messages   va   de  0  (faible)  à
       sysconf(_SC_MQ_PRIO_MAX) - 1        (haute).         Sur         Linux,
       sysconf(_SC_MQ_PRIO_MAX)  renvoie  32768,  mais POSIX.1-2001 ne demande
       qu’une implémentation gérant des priorités allant de 0 à 31.  Certaines
       implémentations ne proposent que cet intervalle.

       Le  reste  de  cette  section  décrit  certains  détails  spécifiques à
       l’implémentation Linux des queues de messages POSIX.

   Interfaces de bibliothèque et appels système
       Dans la plupart des cas, les interfaces  de  bibliothèque  mq_*()  sont
       implémentées  autour  d’appels  système  du  même nom. Les exceptions à
       cette règle sont indiquées dans le tableau ci‐dessous :

           Fonction de bibliothèque   Appel système
           mq_close(3)                close(2)
           mq_getattr(3)              mq_getsetattr(2)
           mq_open(3)                 mq_open(2)
           mq_receive(3)              mq_timedreceive(2)
           mq_send(3)                 mq_timedsend(2)
           mq_setattr(3)              mq_getsetattr(2)
           mq_timedreceive(3)         mq_timedreceive(2)
           mq_timedsend(3)            mq_timedsend(2)
           mq_unlink(3)               mq_unlink(2)

   Versions
       Les files de messages POSIX ne sont gérées  par  Linux  que  depuis  le
       noyau  2.6.6.  La  gestion  n’a  été  ajoutée  à  Glibc  que  depuis la
       version 2.3.4.

   Configuration du noyau
       La gestion des files de messages POSIX est configurable via l’option de
       configuration  du  noyau  CONFIG_POSIX_MQUEUE. Cette option est activée
       par défaut.

   Persistance
       Les files de messages POSIX persistent dans le noyau : si une  file  de
       messages  n’est  pas supprimée avec mq_unlink(3), elle existera jusqu’à
       l’extinction du système.

   Édition des liens
       Les programmes utilisant l’API des files de messages POSIX doivent être
       compilés  avec  cc  -lrt  pour  être  liés à la bibliothèque temps réel
       librt.

   Interfaces /proc
       Les  interfaces  suivantes  peuvent  être  utilisées  pour  limiter  la
       quantité de mémoire du noyau utilisée par les files de messages POSIX :

       /proc/sys/fs/mqueue/msg_max
              Ce fichier peut être  utilisé  pour  visualiser  et  changer  la
              valeur  limite pour le nombre maximum de messages dans une file.
              Cette  valeur  agit  comme   une   borne   pour   le   paramètre
              attr->mq_maxmsg  indiqué  à  mq_open(3). La valeur minimale, par
              défaut, de msg_max vaut 10. La valeur maximale  vaut  HARD_MAX :
              (131072 / sizeof(void *)) (32768 sur Linux/86). Cette limite est
              ignorée pour les processus privilégiés (CAP_SYS_RESOURCE),  mais
              la limite HARD_MAX reste néanmoins imposée.

       /proc/sys/fs/mqueue/msgsize_max
              Ce  fichier  peut  être  utilisé  pour visualiser et modifier la
              limite de la taille maximale des  messages.  Cette  valeur  agit
              comme  une  borne  pour  le paramètre attr->mq_msgsize indiqué à
              mq_open(3). La valeur minimale, par défaut, de msgsize_max  vaut
              8192  octets.  La  valeur  maximale vaut INT_MAX (2147483647 sur
              Linux/86).  Cette  limite  est  ignorée   pour   les   processus
              privilégiés (CAP_SYS_RESOURCE).

       /proc/sys/fs/mqueue/queues_max
              Ce  fichier  peut  être  utilisé  pour visualiser et modifier la
              limite au niveau du système du nombre de files de  messages  qui
              peuvent   être   créées.   Seuls   les   processus   privilégiés
              (CAP_SYS_RESOURCE) peuvent créer de nouvelles files de  messages
              une  fois  que la limite a été atteinte. La valeur par défaut de
              queues_max vaut 256, elle  peut  être  remplacée  par  n’importe
              quelle valeur entre 0 et INT_MAX.

   Limitation des ressources
       La  limitation  des  ressources RLIMIT_MSGQUEUE, qui indique une limite
       sur la quantité d’espace qui peut être utilisée par toutes les files de
       messages appartenant à l’identifiant utilisateur réel du processus, est
       décrite dans getrlimit(2).

   Monter le système de fichiers des files de messages
       Sous Linux, les files de  messages  sont  créées  dans  un  système  de
       fichiers  virtuel.  (D’autres  implémentation peuvent également fournir
       une  telle  fonctionnalité,  mais   les   détails   sont   probablement
       différents.)  Ce  système  de fichiers peut être monté en utilisant les
       commandes suivantes :

           $ mkdir /dev/mqueue
           $ mount -t mqueue none /dev/mqueue

       Le « sticky bit » est  automatiquement  activé  sur  le  répertoire  de
       montage.

       Une  fois  le  système  de fichiers monté, les files de messages sur le
       système peuvent être  visualisées  et  manipulées  avec  les  commandes
       utilisées  habituellement  pour  les  fichiers  (par  exemple, ls(1) et
       rm(1)).

       Le contenu de chaque fichier dans le répertoire est composé d’une seule
       ligne contenant les informations sur la file :

           $ ls /dev/mqueue/mymq
           QSIZE:129     NOTIFY:2    SIGNO:0    NOTIFY_PID:8260
           $ mount -t mqueue none /dev/mqueue

       Ces champs ont les caractéristiques suivantes :

       QSIZE  Nombre d’octets de données dans tous les messages de la file.

       NOTIFY_PID
              Si  différent de zéro, alors le processus avec cet identifiant a
              utilisé mq_notify(3) pour s’enregistrer pour les  avertissements
              asynchrones  de  messages,  et  les  champs  suivants  décrivent
              comment ces avertissements se produisent.

       NOTIFY Méthode d’avertissement : 0 pour SIGEV_SIGNAL, 1 pour SIGEV_NONE
              et 2 pour SIGEV_THREAD.

       SIGNO  Numéro de signal à utiliser pour SIGEV_SIGNAL.

   Consultation des descripteurs de files de messages
       Sous  Linux,  un  descripteur  de  file  de  messages  est  en  fait un
       descripteur de fichier, et peut être contrôlé avec  select(2),  poll(2)
       ou epoll(7). Ceci n’est pas portable.

CONFORMITÉ

       POSIX.1-2001.

NOTES

       Les  files de messages System V (msgget(2), msgsnd(2), msgrcv(2), etc.)
       sont une ancienne API d’échange de messages entre  les  processus.  Les
       files  de  messages  POSIX  fournissent  une  interface  mieux  conçue.
       Cependant, les files de  messages  POSIX  sont  moins  disponibles  (en
       particulier  sur  les  anciens  systèmes)  que  les  files  de messages
       System V.

       Actuellement (2.6.26), Linux ne gère pas l’utilisation  des  listes  de
       contrôle  d’accès  (ACL :  Access  Control  List) des files de messages
       POSIX.

EXEMPLE

       Un  exemple  d’utilisation  des  différentes  fonctions  des  files  de
       messages est disponible dans mq_notify(3).

VOIR AUSSI

       getrlimit(2),   mq_getsetattr(2),   poll(2),   select(2),  mq_close(3),
       mq_getattr(3),  mq_notify(3),  mq_open(3),  mq_receive(3),  mq_send(3),
       mq_unlink(3), epoll(7)

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.07 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> ».