【问题标题】:Check Unix Message Queue if empty or not检查 Unix 消息队列是否为空
【发布时间】:2012-09-14 15:10:32
【问题描述】:

谁能告诉我如何检查消息队列中是否有任何消息。 消息队列在基于 linux 的操作系统中用 C 语言实现。 我只想检查特定时间消息队列中是否有任何消息。

【问题讨论】:

  • 如何实现你的消息队列?您正在使用什么系统调用(mq_open 等....)?你能改变处理这些队列的例程吗?
  • 我只是按照这个指南beej.us/guide/bgipc/output/html/multipage/mq.html 我已经把我的消息队列列在这里

标签: c unix message-queue


【解决方案1】:

只检查消息的数量(如果有的话)是使用

msgctl() 

函数,并在返回时检查 msqid_ds 结构,此结构中的 msg_qnum 是队列中的消息量。这是一个带有示例的链接:msgctl example,它比您想要的更多,但是在 msgctl() 调用之后,您只需检查我上面提到的结构中的该字段。

#include <sys/msg.h>

main() {
  int msqid = 2;
  int rc;
  struct msqid_ds buf;
  int num_messages;

  rc = msgctl(msqid, IPC_STAT, &buf);
  num_messages = buf.msg_qnum;
}

这个例子应该做你想做的,并且只做你想做的。

【讨论】:

  • 我无法理解这个函数到底在做什么,但据我所知,这段代码正在尝试连接到消息队列,如果无法连接它会显示错误。但这将如何判断消息队列中是否有消息?
  • 没错,我有点太快了,抱歉。我只检查是否确实有消息更新了文本。
猜你喜欢
  • 2014-06-18
  • 1970-01-01
  • 2011-04-09
  • 1970-01-01
  • 2011-02-20
  • 2023-04-08
  • 2011-12-19
  • 2019-12-02
  • 1970-01-01
相关资源
最近更新 更多