我想知道一个队列消息是否为空。我已经使用了如下所示的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);
}
在两种情况下,在向队列发送消息之前和之后,我得到了相同的结果。
消息成功到达队列,我通过读取我发送的内容进行了测试。