Linux |
CentOS 5.3 |
|
mq_overview(7) |
mq_overview − Vue d’ensemble des files de messages POSIX. |
Les files de messages POSIX permettent à des processus d’échanger des données sous la forme de message. Cette API est distincte de celle fournie par les files de messages Système V (msgget(2), msgsnd(2), msgrcv(2), etc.), mais fournit des fonctionnalités similaires. Les files de messages sont créées et ouvertes avec mq_open(3) ; cette fonction renvoie un descripteur de file de messages (mqd_t), qui sera utilisé pour faire référence à une file de messages ouverte dans des appels ultérieurs. Chaque file de messages est identifiée par un nom de la forme /unnom. Deux processus peuvent agir sur la même file en passant le même nom à mq_open(). Les messages sont transférés de et vers une file avec respectivement mq_receive(3) et mq_send(3). Lorsqu’un processus a fini d’utiliser une file, il la ferme avec mq_close(3), et lorsque la file n’est plus nécéssaire, elle peut être supprimée avec mq_unlink(3). Les attributs peuvent être obtenus et (dans certains cas) modifiés avec mq_getattr(3) et mq_setattr(3). Un processus peut demander une notification asynchrone de l’arrivée d’un message sur une file précédemment vide avec mq_notify(3). Un descripteur de file de messages est une référence à une description de file de messages ouverte (cf. open(2)). Après un fork(2), un fils hérite d’une copie des descripteurs de file de messages du père, et ces descripteurs font référence aux mêmes descriptions de file de messages ouvertes que les descripteurs du père. Les descripteurs correspondants dans les deux processus partagent les attributs (mq_flags) qui sont associés à la description de file de messages ouverte. Chaque message a une priorité priority, associée et les messages sont toujours délivrés au processus récepteur avec la plus forte priorité. Les priorités des messages s’échelonnent de 0 (plus basse) à sysconf(_SC_MQ_PRIO_MAX) - 1 (plus haute). Sous Linux, sysconf(_SC_MQ_PRIO_MAX) renvoie 32768 mais POSIX.1-2001 ne réclame qu’un intevalle de priorité entre 0 et 31 ; certaines implémentations ne fournissent que cet intervalle. |
Interfaces bibliothèque et appels système |
Dans la plupart des cas, les interfaces bibliothèques mq_*() citées ci-dessus sont implémentées avec les appels système de même nom. Les écarts à ce schéma sont indiqués dans la table suivante : |