5

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

4

1 回答 1

8

只需使用

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;
}

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

于 2012-09-22T11:35:51.963 回答