C++ 当进程通过msgrcv读取IPC消息时会发生什么情况?
当进程使用C++ 当进程通过msgrcv读取IPC消息时会发生什么情况?,c++,c,linux,C++,C,Linux,当进程使用msgrcv读取IPC消息时会发生什么情况 为什么我不能多次阅读具有相同mtype的邮件 所用结构的代码: struct msgbuff{ long mtype; char mtext[150]; }; 消息只能读取一次。以下是msgrcv手册页描述其功能的方式: msgrcv()系统调用从msqid指定的队列中删除消息,并将其放置在msgp指向的缓冲区中 没有办法偷看队列。如果需要,可以使用msgrcv()从队列中弹出一个项目,然后使用msgsnd()再次添加
msgrcv
读取IPC消息时会发生什么情况
为什么我不能多次阅读具有相同mtype
的邮件
所用结构的代码:
struct msgbuff{
long mtype;
char mtext[150];
};
消息只能读取一次。以下是msgrcv手册页描述其功能的方式: msgrcv()系统调用从msqid指定的队列中删除消息,并将其放置在msgp指向的缓冲区中
没有办法偷看队列。如果需要,可以使用msgrcv()从队列中弹出一个项目,然后使用msgsnd()再次添加它。有失败的风险(队列已满、内存不足等),因此它不是万无一失的。您是否尝试再次读取相同的消息?还是第二条具有相同mtype的消息?我正在尝试第二次阅读相同的消息。它们在被阅读后被销毁了吗?嗯,谢谢你,维克特·阿克曼和萨蒂什。我可以用相同的mtype发送第二条消息吗?当然,类型的使用频率没有限制。该类型仅用于允许您选择要接收的邮件。