当进程使用msgrcv
?
为什么我不能多次阅读mtype
次邮件?
正在使用的结构代码:
struct msgbuff{
long mtype;
char mtext[150];
};
答案 0 :(得分:2)
消息只能读取一次。这是msgrcv手册页描述其功能的方式:
msgrcv()系统调用从msqid指定的队列中删除一条消息,并将其放入msgp指向的缓冲区中。
没有办法偷看队列。如果需要,可以使用msgrcv()从队列中弹出一个项目,然后使用msgsnd()再次添加它。存在失败的风险(队列已满,内存不足等),因此并非万无一失。