【问题标题】:What happens when a process reads an IPC message via msgrcv? [closed]当进程通过 msgrcv 读取 IPC 消息时会发生什么? [关闭]
【发布时间】:2013-01-15 00:13:00
【问题描述】:

当进程读取带有msgrcv 的 IPC 消息时会发生什么?

为什么我不能多次阅读具有相同mtype 的消息?

所用结构的代码:

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

【问题讨论】:

标签: c++ c linux


【解决方案1】:

一条消息只能阅读一次。 msgrcv 手册页是这样描述其功能的:

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

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

【讨论】:

  • 嗯,谢谢 Wichert Akkerman 和 Satish。我可以发送具有相同 mtype 的第二条消息吗?
  • 当然,类型的使用频率没有限制。该类型仅用于允许您选择要接收的消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
  • 2012-07-20
  • 2017-07-11
  • 1970-01-01
  • 2020-05-05
相关资源
最近更新 更多