我想知道队列消息是否为空。我已经使用 msg_ctl() 如下它不起作用:
struct msqid_ds buf;
int num_messages;
rc = msgctl(msqid, IPC_STAT, &buf);
我已经使用了这个 peek 功能:
int peek_message( int qid, long type )
{
int result, length;
if((result = msgrcv( qid, NULL, 0, type, IPC_NOWAIT)) == -1) {
if(errno==E2BIG)
return(1);
}
return(0);
}
在这两种情况下,我在向队列发送消息之前和之后都会得到相同的结果。
消息成功到达队列,我已经通过阅读我发送的内容进行了测试。