Provided by: manpages-fr_3.65d1p1-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 ; 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 d'une  file  de  messages  ouverte
       (consultez  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 n'exige des implémentations que la prise en charge 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 maximal 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.65 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

       Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par
       l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

       Christophe       Blaess       <http://www.blaess.fr/christophe/>      (1996-2003),      Alain      Portal
       <http://manpagesfr.free.fr/> (2003-2006).  Julien  Cristau  et  l'équipe  francophone  de  traduction  de
       Debian (2006-2009).

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

Linux                                           27 septembre 2009                                 MQ_OVERVIEW(7)