- 论坛徽章:
- 0
|
各位大虾好,我现在用的消息队列出现不读取的问题,实现消息队列收操作的函数已经贴出来了,麻烦各位好心人帮看下。我传入的msgType>0,bufLen=sizeof(SmsObject),SmsObject结构体是一个短信包。
int msgRcvNoWait(const int msgId, long int *msgType,void *buf,const int bufLen)
{
msgbufstr msgstr;
int ret;
// if(msgType<0 || msgId<=0)
if(msgType<0 || msgId<0)
{
return -1;
}
errno=0;
memset(&msgstr,0,sizeof(msgbufstr));
while((ret=msgrcv(msgId,(void *)&msgstr,bufLen,*msgType,IPC_NOWAIT)) < 0)
{
if(errno==EINTR || errno==EAGAIN )
{
usleep(1000);
continue;
}
return -2;
}
*msgType=msgstr.mtype;
memcpy(buf, msgstr.mdata, bufLen);
return 0;
} |
|