POSIX提供了一种使用其mq_receive函数读取消息队列的方法。此函数还会将其从队列中删除。我需要找到一种方法来检查消息是否在队列中,而不删除它。
发布于 2010-12-02 06:09:39
参见mq_getattr(3)。其中一个属性是mq_curmsgs。除了从epoll()获得的布尔指示之外,还能实际获得队列深度是很好的。
来自Linux手册页:
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 */
};发布于 2013-06-24 22:08:17
您可能希望在打开消息队列时添加一个mq_attr数据结构,然后使用mq_getattr函数获取属性
int mq_getattr(mqd_t mqdes,struct mq_attr *attr);
最后,看看它的mq_curmsgs成员
https://stackoverflow.com/questions/3096826
复制相似问题