是否可以确定 POSIX 消息队列中有多少消息?

Is it possible to determine how many messages are in a POSIX message queue?

我正在 RHEL 机器上使用 POSIX 运行。有没有办法检查消息队列中剩余的消息数(最好是系统 V)?

这样做的目的只是想知道在给定时间哪些队列的消息最多,这样我就可以让“管理”线程以最长队列优先的方式接收消息。

我在手册页中没有看到任何关于此的信息(它们是 C/C++ 特定的并且与 IPC 无关)。

有没有人知道如何做到这一点?

您在评论中说您正在使用 msgget() to create the message queue. In that case, you can use msgctl() 通过返回的 msqid_ds::msg_qnum 结构字段获取队列中的消息数。