Provided by:
manpages-fr_3.32d0.2p4-1_all 
NOM
mq_overview - Panorama des files de messages POSIX
DESCRIPTION
Les files de messages POSIX permettent aux processus d'echanger des
donnees 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 fonctionnalites similaires.
Les files de messages sont creees et ouvertes en utilisant mq_open(3).
Cette fonction retourne un descripteur de file de messages (mqd_t),
utilise pour se referer a la file de messages ouverte dans les
prochains appels. Chaque file de messages est distinguee par son nom
sous la forme /un_nom ; c'est-a-dire un chaine terminee par un
caractere nul pouvant avoir jusqu'a NAME_MAX (255) caracteres,
commencant par une barre oblique (<< / >>) suivie d'un caractere ou
plus, aucun de ces derniers n'etant une barre oblique. Deux processus
peuvent operer sur la meme file en fournissant le meme nom a
mq_open(3).
Les messages sont transferes a une file et recuperes 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 necessaire, elle peut etre supprimee avec
mq_unlink(3). Les attributs de la file peuvent etre obtenus et (dans
certains cas) modifies en utilisant mq_getattr(3) et mq_setattr(3). Un
processus peut demander un avertissement asynchrone de l'arrivee d'un
message sur une file auparavant vide en utilisant mq_notify(3).
Un descripteur de file de messages est une reference a une description
d'une file de messages ouverte (consultez open(2)). Apres un appel a
fork(2), un processus fils herite des copies des descripteurs de file
de messages de son parent, et ces descripteurs referent aux memes
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 associe a la
description de la file de messages ouverte.
Chaque message contient une priorit'e associee, et les messages sont
toujours delivres au processus de reception par ordre de priorite.
L'intervalle de priorite des messages va de 0 (faible) a
sysconf(_SC_MQ_PRIO_MAX) - 1 (haute). Sur Linux,
sysconf(_SC_MQ_PRIO_MAX) renvoie 32768, mais POSIX.1-2001 ne demande
qu'une implementation gerant des priorites allant de 0 a 31. Certaines
implementations ne proposent que cet intervalle.
Le reste de cette section decrit certains details specifiques a
l'implementation Linux des queues de messages POSIX.
Interfaces de biblioth`eque et appels syst`eme
Dans la plupart des cas, les interfaces de bibliotheque mq_*() sont
implementees autour d'appels systeme du meme nom. Les exceptions a
cette regle sont indiquees dans le tableau ci-dessous :
Fonction de biblioth`eque Appel syst`eme
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 gerees par Linux que depuis le
noyau 2.6.6. La gestion n'a ete ajoutee a 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 activee
par defaut.
Persistance
Les files de messages POSIX persistent dans le noyau : si une file de
messages n'est pas supprimee avec mq_unlink(3), elle existera jusqu'a
l'extinction du systeme.
'Edition des liens
Les programmes utilisant l'API des files de messages POSIX doivent etre
compiles avec cc -lrt pour etre lies a la bibliotheque temps-reel
librt.
Interfaces /proc
Les interfaces suivantes peuvent etre utilisees pour limiter la
quantite de memoire du noyau utilisee par les files de messages POSIX :
/proc/sys/fs/mqueue/msg_max
Ce fichier peut etre utilise pour visualiser et changer la
valeur limite pour le nombre maximal de messages dans une file.
Cette valeur agit comme une borne pour le parametre
attr->mq_maxmsg indique a mq_open(3). La valeur par defaut de
msg_max vaut 10. La valeur minimale est de 1 (10 pour les noyaux
anterieurs a 2.6.28). La valeur maximale vaut HARD_MAX :
(131072 / sizeof(void *)) (32768 sur Linux/86). Cette limite est
ignoree pour les processus privilegies (CAP_SYS_RESOURCE), mais
la limite HARD_MAX reste neanmoins imposee.
/proc/sys/fs/mqueue/msgsize_max
Ce fichier peut etre utilise pour visualiser et modifier la
limite de la taille maximale des messages. Cette valeur agit
comme une borne pour le parametre attr->mq_msgsize indique a
mq_open(3). La valeur par defaut de msgsize_max est de
8192 octets. La valeur minimale est de 128 (8192 pour les noyaux
anterieurs a 2.6.28). La valeur maximale de msgsize_max est de
1 048 576 octets (dans les noyaux anterieurs a 2.6.28, la valeur
maximale etait de INT_MAX, c'est-a-dire 2 147 483 647 sur
Linux/86). Cette limite est ignoree pour les processus
privilegies (CAP_SYS_RESOURCE).
/proc/sys/fs/mqueue/queues_max
Ce fichier peut etre utilise pour visualiser et modifier la
limite au niveau du systeme du nombre de files de messages qui
peuvent etre creees. Seuls les processus privilegies
(CAP_SYS_RESOURCE) peuvent creer de nouvelles files de messages
une fois que la limite a ete atteinte. La valeur par defaut de
queues_max vaut 256, elle peut etre remplacee 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 quantite d'espace qui peut etre utilisee par toutes les files de
messages appartenant a l'identifiant utilisateur reel du processus, est
decrite dans getrlimit(2).
Monter le syst`eme de fichiers des files de messages
Sous Linux, les files de messages sont creees dans un systeme de
fichiers virtuel. (D'autres implementation peuvent egalement fournir
une telle fonctionnalite, mais les details sont probablement
differents.) Ce systeme de fichiers peut etre monte (par le
superutilisateur) en utilisant les commandes suivantes :
# mkdir /dev/mqueue
# mount -t mqueue none /dev/mqueue
Le << sticky bit >> est automatiquement active sur le repertoire de
montage.
Une fois le systeme de fichiers monte, les files de messages sur le
systeme peuvent etre visualisees et manipulees avec les commandes
utilisees habituellement pour les fichiers (par exemple, ls(1) et
rm(1)).
Le contenu de chaque fichier dans le repertoire est compose 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 caracteristiques suivantes :
QSIZE Nombre d'octets de donnees dans tous les messages de la file.
NOTIFY_PID
Si different de zero, alors le processus avec cet identifiant a
utilise mq_notify(3) pour s'enregistrer pour les avertissements
asynchrones de messages, et les champs suivants decrivent
comment ces avertissements se produisent.
NOTIFY Methode d'avertissement : 0 pour SIGEV_SIGNAL, 1 pour SIGEV_NONE
et 2 pour SIGEV_THREAD.
SIGNO Numero de signal a 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 etre controle avec select(2), poll(2)
ou epoll(7). Ceci n'est pas portable.
CONFORMIT'E
POSIX.1-2001.
NOTES
Les files de messages System V (msgget(2), msgsnd(2), msgrcv(2), etc.)
sont une ancienne API d'echange de messages entre les processus. Les
files de messages POSIX fournissent une interface mieux concue.
Cependant, les files de messages POSIX sont moins disponibles (en
particulier sur les anciens systemes) que les files de messages
System V.
Actuellement (2.6.26), Linux ne gere pas l'utilisation des listes de
controle d'acces (ACL : Access Control List) des files de messages
POSIX.
EXEMPLE
Un exemple d'utilisation des differentes 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.32 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe de traduction
francophone au sein du projet perkamon
<URL:http://perkamon.alioth.debian.org/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003),
Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Julien
Cristau et l'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.