检查Unix消息队列是否为空

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

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

 msgctl() 

函数,并在返回时检查msqid_ds结构,此结构中的msg_qnum是队列中的消息数量。 下面是一个例子的链接: msgctl的例子 ,它不是你想要的,但是在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; } 

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