Answers:
我没有知道的命令,但是有一个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 */
};
如果您有幸使用HP-UX,则命令pipcs
(PDF)执行与SysV IPC ipcs
命令等效的POSIX 。可悲的是,它从未出现在其他操作系统上。当前(2013年3月)的util-linux软件包ipcs
几乎未提及POSIX mqueue。
如果您已mqueue
在上安装/dev/mqueue
,则仅支持将队列作为文件读取:
user@linux $ cat /dev/mqueue/myQ
QSIZE:0 NOTIFY:0 SIGNO:0 NOTIFY_PID:0
的QSIZE
是不幸的字节,而不是消息的大小; 在Linux上(到目前为止)还没有消息计数字段-与提供值的FreeBSD不同CURMSG
:
user@freebsd $ cat /mnt/mqueue/myQ
QSIZE:0 MAXMSG:32 CURMSG:0 MSGSIZE:1024
因此答案应该是“挂载mqueue FS并使用cat
”,但不是:(
(安装mqueue FS不是使用MQ API的先决条件,它只是让您做一些“一切都是文件”的工作。)
如果您确实需要监视队列,则《 Linux编程接口》一书提供了用于创建,检查和使用消息队列的各种CLI工具的C源代码。令人高兴的是,本书第52章涵盖了该主题,目前可以免费下载。请参阅pmsg_getattr.c
。
斯蒂芬的Unix网络编程(第2卷)第二版的规范参考代码。(1999年),可在这里,它提供了除其他事项外mqgetattr
,将做的工作太多(尽管你可能需要按摩几行的顶层config.h
,在#define
的各种uint
与现代的Unix系统头类型的冲突)。
还有Ruby,Perl和TCL模块,Ruby一个带有posix-mq-rb
CLI工具。
$ ipcs -q
将从命令行提供消息队列统计信息。
$ ipcs -m
将从命令行提供共享内存统计信息。
$ ipcs
将提供所有ipc机制统计信息。
ipcs
不适用于POSIX1消息队列
ipcs
用于System V消息队列,而不用于POSIX消息队列