当进程通过msgrcv读取IPC消息时会发生什么?

时间:2013-01-14 16:01:24

标签: c++ c linux

当进程使用msgrcv

读取IPC消息时会发生什么?

为什么我不能多次阅读mtype次邮件?

正在使用的结构代码:

struct msgbuff{
    long mtype;
    char mtext[150];   
};

1 个答案:

答案 0 :(得分:2)

消息只能读取一次。这是msgrcv手册页描述其功能的方式:

  

msgrcv()系统调用从msqid指定的队列中删除一条消息,并将其放入msgp指向的缓冲区中。

没有办法偷看队列。如果需要,可以使用msgrcv()从队列中弹出一个项目,然后使用msgsnd()再次添加它。存在失败的风险(队列已满,内存不足等),因此并非万无一失。