type置零:接收时不过滤;否则就要匹配才能接收。 什么情况下 msgsnd消息队列 和msgrcv的结果不同呢? if((len=msgrcv(dyjinque,&msg,sizeof(msg.text),0,0))==-1){ printf("======接收消息队列失败!!\n"); err_w("msgrcv") } 复制代码 我改成 if((len=msgrcv(dyjinque,&msg,sizeof(msg.text),msg.ntype,0))==-1){ printf("======接收消息队列失败!!\n"); err_w("msgrcv") } 复制代码 却收不到消息了 你的msg.ntype是什么值?你msgsnd时候写的是什么值? stMsgQBuf.type = iMsgQType 在RECV时,MQ的TYPE要等于你发送时的TYPE。