是否可以确定 POSIX 消息队列中有多少条消息?
Posted
技术标签:
【中文标题】是否可以确定 POSIX 消息队列中有多少条消息?【英文标题】:Is it possible to determine how many messages are in a POSIX message queue? 【发布时间】:2021-12-23 12:28:43 【问题描述】:我正在使用在 RHEL 机器上运行的 POSIX。有没有办法检查消息队列中剩余的消息数量(最好是 System V)?
这样做的目的只是想知道在给定时间哪些队列拥有最多的消息,以便我可以让“管理”线程以最长队列优先的方式接收消息。
我在手册页中没有看到任何关于此的内容(这些是特定于 C/C++ 且与 IPC 无关的)。
有人知道怎么做吗?
【问题讨论】:
你是如何开始创建消息队列的? msgget(KEY, 0666 | IPC_CREAT) 是我目前正在使用的。 如果您使用msgget
,那么您使用的不是 POSIX 消息队列,而是 System V 消息队列。请澄清。
【参考方案1】:
您在 cmets 中说您正在使用 msgget()
创建消息队列。在这种情况下,您可以使用msgctl()
通过返回的msqid_ds::msg_qnum
struct 字段来获取队列中的消息数。
【讨论】:
这正是我所需要的,谢谢!以上是关于是否可以确定 POSIX 消息队列中有多少条消息?的主要内容,如果未能解决你的问题,请参考以下文章