Loading

NOM

       mq_overview - Panorama des files de messages POSIX

       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 ;  c’est-à-dire  un  chaîne  terminée  par  un
       caractère   nul   pouvant  avoir  jusqu’à  NAME_MAX  (255)  caractères,
       commençant par une barre oblique (« / ») suivie d’un caractère ou plus,
       aucun de ces derniers n’étant une barre oblique. 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_notify(3)               mq_notify(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  par  défaut  de
              msg_max vaut 10. La valeur minimale est de 1 (10 pour les noyaux
              antérieurs  à  2.6.28).  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 par défaut  de  msgsize_max  est  de  8192
              octets.  La  valeur  minimale  est  de 128 (8192 pour les noyaux
              antérieurs à 2.6.28). La valeur maximale de msgsize_max  est  de
              1 048 576 octets (dans les noyaux antérieurs à 2.6.28, la valeur
              maximale  était  de  INT_MAX,  c’est-à-dire  2 147 483 647   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é   (par   le
       superutilisateur) 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 :

           $ cat /dev/mqueue/mymq
           QSIZE:129     NOTIFY:2    SIGNO:0    NOTIFY_PID:8260

       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.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> ».