Provided by: manpages-fr_3.57d1p1-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.57 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> ».