Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
当进程读取 IPC 消息时会发生什么msgrcv?
msgrcv
为什么我不能mtype多次阅读相同的消息?
mtype
正在使用的结构的代码:
struct msgbuff{ long mtype; char mtext[150]; };
一条消息只能阅读一次。这是 msgrcv 手册页描述其功能的方式:
msgrcv() 系统调用从 msqid 指定的队列中删除一条消息,并将其放在 msgp 指向的缓冲区中。
没有办法偷看队列。如果需要,可以使用 msgrcv() 从队列中弹出一个项目,然后使用 msgsnd() 再次添加它。存在失败的风险(队列已满、内存不足等),因此它不是万无一失的。
元素