bionic (7) mq_overview.7.gz

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