Nous pouvons vérifier les détails de la file d'attente de messages System V à l'aide de ipcs
command. Y a-t-il une commande pour vérifier la file d'attente de message POSIX à Linux?
Il n'y a pas de commandement que je connaisse mais il existe un appel de la fonction libc qui peut obtenir les statistiques:
Man 3 mq_getaTatr
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 */
};
$ ipcs -q
fournira des statistiques de la file d'attente de messages de la ligne de commande.
$ ipcs -m
fournira des statistiques de mémoire partagées de la ligne de commande.
$ ipcs
fournira toutes les statistiques de mécanisme IPC.
Si vous êtes assez chanceux d'utiliser HP-UX , la commande pipcs
(pdf) Effectue la POSIX équivalent au SYSV IPC ipcs
commande. Malheureusement, il n'est jamais apparu pour d'autres systèmes d'exploitation. Le package actuel (mars 2013) til-linux paquet qui fournit ipcs
_ à peine mentionne POSIX MQUESUES.
Si vous avez mqueue
monté sur /dev/mqueue
, ce qui est pris en charge lit simplement la file d'attente en tant que fichier:
user@linux $ cat /dev/mqueue/myQ
QSIZE:0 NOTIFY:0 SIGNO:0 NOTIFY_PID:0
Le QSIZE
est malheureusement la taille des octets, pas des messages; Sur Linux, il n'y a pas encore de champ Nombre de messages - Contrairement à FreeBSD qui fournit une valeur CURMSG
:
user@freebsd $ cat /mnt/mqueue/myQ
QSIZE:0 MAXMSG:32 CURMSG:0 MSGSIZE:1024
Donc la réponse devrait être "Montez la monteuse FS et utilisez cat
", mais ce n'est pas :(
(Montage du MQUE FS N'EST PAS une condition préalable à l'utilisation de l'API MQ, il vous permet de faire "tout est un fichier".)
Si vous avez vraiment besoin de surveiller les files d'attente, le livre ( L'interface de programmation Linux Le code source C pour divers outils CLI pour créer , inspectez et utilisez des files d'attente de messages. Heureusement, le chapitre 52 du livre qui couvre ce sujet est actuellement disponible gratuitement au téléchargement. Voir pmsg_getattr.c
.
Le code de référence canonique de Stephen's Programmation réseau Unix (Vol 2) 2e Ed. (1999) est disponible ici , il fournit Parmi d'autres choses mqgetattr
qui fera le travail aussi (bien que vous aurez probablement besoin de masser quelques lignes dans le haut niveau config.h
, les #define
's pour diverses uint
Types sont en conflit avec des en-têtes de système Unix contemporain).
Il y a aussi ruby , Perl et [~ # ~] tcl [~ # ~ ~] modules pour cela, le Ruby On vient avec A posix-mq-rb
outil CLI.