Si vous avez la chance d'utiliser HP-UX , la commande pipcs
(PDF) (désolé lien cassé, pas d'archive actuelle , consultez cette page de manuel sur unix.com à la place) exécute l'équivalent POSIX du SysV IPC ipcs
commande. Malheureusement, il n'est jamais apparu pour d'autres systèmes d'exploitation. Le paquet util-linux actuel (janvier 2021) qui fournit ipcs
mentionne à peine les files d'attente POSIX.
Si vous avez mqueue
monté sur /dev/mqueue
, qu'est-ce que est pris en charge lit les métadonnées d'une file d'attente existante sous forme de fichier :
[email protected] $ sudo mount -t mqueue mqueue /dev/mqueue
[email protected] $ mq_create -c /myQ
[email protected] $ cat /dev/mqueue/myQ
QSIZE:0 NOTIFY:0 SIGNO:0 NOTIFY_PID:0
Le QSIZE
n'est malheureusement que la taille en octets, pas en messages ; sous Linux, il n'y a (pour l'instant, noyau 5.4) aucun champ de comptage de messages - contrairement à FreeBSD qui fournit un CURMSG
valeur :
[email protected] $ cat /mnt/mqueue/myQ
QSIZE:0 MAXMSG:32 CURMSG:0 MSGSIZE:1024
Donc la réponse devrait être "monter le mqueue FS et utiliser cat
", mais ce n'est pas :(
(Le montage de mqueue FS n'est pas une condition préalable à l'utilisation de l'API MQ, il vous permet simplement de faire des choses "tout est un fichier".)
Il y a une bonne couverture des files d'attente de messages dans le livre L'interface de programmation Linux , y compris le code source C pour divers outils CLI pour créer, inspecter et utiliser des files d'attente de messages. Heureusement, le chapitre 52 du livre qui couvre ce sujet est actuellement disponible en téléchargement gratuit. Voir pmsg_getattr.c
.
Le code de référence canonique de Stephen's Unix Network Programming (Vol 2) 2nd Ed. (1999) est disponible ici, il fournit entre autres mqgetattr
qui fera le travail aussi (bien que vous aurez probablement besoin de masser quelques lignes dans le niveau supérieur config.h
, le #define
's pour divers uint
les types sont en conflit avec les en-têtes du système Unix contemporain).
Il existe également des modules Ruby, Perl et TCL pour cela, celui de Ruby est livré avec un posix-mq-rb
Outil CLI.
$ ipcs -q
fournira des statistiques sur la file d'attente des messages à partir de la ligne de commande.
$ ipcs -m
fournira des statistiques sur la mémoire partagée à partir de la ligne de commande.
$ ipcs
fournira toutes les statistiques du mécanisme ipc.
Il n'y a pas de commande que je connaisse mais il existe un appel de fonction libc qui peut obtenir les statistiques :
homme 3 mq_getattr
mq_getattr() returns an mq_attr structure in the buffer pointed by
attr. This structure is defined as:
struct mq_attr {
long mq_flags; /* Flags: 0 or O_NONBLOCK */
long mq_maxmsg; /* Max. # of messages on queue */
long mq_msgsize; /* Max. message size (bytes) */
long mq_curmsgs; /* # of messages currently in queue */
};