幸運にも HP-UX を使用できる場合 、コマンド pipcs
(PDF) (リンク切れ、現在のアーカイブはありません 代わりに、unix.com のこの man ページを参照してください) は、SysV IPC ipcs
と同等の POSIX を実行します。 指図。残念ながら、他の OS では登場しませんでした。 ipcs
を提供する現在 (2021 年 1 月) の util-linux パッケージ POSIX mqueue についてはほとんど触れていません。
mqueue
の場合 /dev/mqueue
に搭載 、とは サポートされているのは、既存のキューのメタデータをファイルとして読み取ることです:
[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
QSIZE
残念ながらメッセージではなくバイト単位のサイズです。 Linux には (まだカーネル 5.4 では) メッセージカウントフィールドがありません – FreeBSD とは異なります CURMSG
を提供します 値:
[email protected] $ cat /mnt/mqueue/myQ
QSIZE:0 MAXMSG:32 CURMSG:0 MSGSIZE:1024
したがって、答えはすべき 「mqueue FS をマウントし、cat
を使用する」 "、しかしそうではありません:(
(mqueue FS のマウントは、MQ API を使用するための前提条件ではありません。「すべてがファイルである」ことを実行できるようにするだけです。)
本 The Linux Programming Interface には、メッセージ キューに関する十分な説明があります。 には、メッセージ キューを作成、検査、および使用するためのさまざまな CLI ツールの C ソース コードが含まれています。幸いなことに、このトピックを扱っている本の第 52 章は、現在無料でダウンロードできます。 pmsg_getattr.c
を参照 .
Stephen の Unix Network Programming (Vol 2) 2nd Ed. からの正規参照コード。 (1999) はここから入手でき、とりわけ mqgetattr
を提供します。 これも仕事をします(ただし、トップレベルの config.h
で数行をマッサージする必要があるでしょう) 、#define
さまざまな uint
の タイプは現在の Unix システム ヘッダーと競合します)。
このための Ruby、Perl、および TCL モジュールもあります。Ruby には posix-mq-rb
が付属しています。 CLI ツール。
$ ipcs -q
コマンドラインからメッセージキューの統計を提供します。
$ ipcs -m
コマンドラインから共有メモリの統計情報を提供します。
$ ipcs
すべての IPC メカニズム統計を提供します。
私が知っているコマンドはありませんが、統計を取得できる libc 関数呼び出しが存在します:
男 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 */
};