Wenn Sie das Glück haben, HP-UX zu verwenden , der Befehl pipcs
(PDF) (leider Link defekt, kein aktuelles Archiv , siehe stattdessen diese Manpage auf unix.com) führt das POSIX-Äquivalent zum SysV IPC ipcs
aus Befehl. Leider ist es nie für andere Betriebssysteme erschienen. Das aktuelle (Januar 2021) util-linux-Paket, das ipcs
bereitstellt erwähnt kaum POSIX-Mqueues.
Wenn Sie mqueue
haben montiert auf /dev/mqueue
, was ist unterstützt wird das Lesen von Metadaten für eine vorhandene Warteschlange als Datei:
[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
Die QSIZE
ist leider nur die Größe in Bytes, nicht Nachrichten; unter Linux gibt es (noch, Kernel 5.4) kein Message-Count-Feld – im Gegensatz zu FreeBSD was einen CURMSG
liefert Wert:
[email protected] $ cat /mnt/mqueue/myQ
QSIZE:0 MAXMSG:32 CURMSG:0 MSGSIZE:1024
Also die Antwort sollte sei "mount the mqueue FS and use cat
", aber es ist nicht :(
(Das Mounten des mqueue FS ist keine Voraussetzung für die Verwendung der MQ-API, es lässt Sie nur ein paar "Alles-ist-eine-Datei"-Sachen machen.)
Das Buch The Linux Programming Interface enthält eine gute Behandlung von Nachrichtenwarteschlangen , einschließlich C-Quellcode für verschiedene CLI-Tools zum Erstellen, Untersuchen und Verwenden von Nachrichtenwarteschlangen. Glücklicherweise ist Kapitel 52 des Buches, das dieses Thema behandelt, derzeit kostenlos zum Download verfügbar. Siehe pmsg_getattr.c
.
Der kanonische Referenzcode aus Stephens Unix Network Programming (Vol 2) 2nd Ed. (1999) ist hier verfügbar, es liefert unter anderem mqgetattr
was auch funktioniert (obwohl Sie wahrscheinlich ein paar Zeilen in der obersten Ebene config.h
massieren müssen , die #define
's für verschiedene uint
-Typen stehen in Konflikt mit zeitgenössischen Unix-System-Headern).
Dafür gibt es auch Ruby-, Perl- und TCL-Module, das Ruby-Modul kommt mit einem posix-mq-rb
CLI-Tool.
$ ipcs -q
stellt Nachrichtenwarteschlangenstatistiken von der Befehlszeile bereit.
$ ipcs -m
liefert Shared-Memory-Statistiken über die Befehlszeile.
$ ipcs
liefert alle IPC-Mechanismen-Statistiken.
Mir ist kein Befehl bekannt, aber es gibt einen libc-Funktionsaufruf, der die Statistiken abrufen kann:
Mann 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 */
};