【问题标题】:Multicast IPC options in unixunix 中的多播 IPC 选项
【发布时间】:2015-04-30 20:25:47
【问题描述】:

在以下 IPC 选项列表中,可以执行多播(即 1 个发送者和多个接收者):

  • 信号
  • 半双工管
  • 命名管道
  • system V 消息队列
  • unix 域套接字

编辑

  • 内存映射文件

据我了解,命名管道可能有可能(不确定)。

【问题讨论】:

  • 这听起来像是你的作业中的问题,而不是实际的编程问题。
  • 一个消息队列或管道可以有多个读取器,但只有其中一个能够读取任何特定消息。
  • 这肯定不是功课。我只是想进行比较。
  • Unix 域套接字在 POSIX 中不支持多播,但 Linux 将其添加为扩展。 lkml.org/lkml/2012/2/20/208
  • 所以我认为一般的答案是他们都没有。

标签: unix ipc


【解决方案1】:

没有什么比多播在概念上更灵活,但有一些限制,一些设施可能会做你想做的事。

信号可能是delivered to a process group。您列出的其他 IPC 机制具有发送方/接收方模型,不适合多播,除非 @Barmar 在 cmets 中指出的 Linux 多播 AF_UNIX 套接字等本地扩展。

如果您只需要向后代进程发送一个“信号”,并且只发送一次,则可以使用继承的 fifo。所有的接收者都继承了fifo的读端,而不是写端。持有写入端的进程会在某个时间点将其关闭,所有接收者都会在其读取端副本上检测到 EOF。

【讨论】:

  • 忘记添加..内存映射文件呢?
猜你喜欢
  • 2010-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-01
  • 2011-04-01
  • 1970-01-01
  • 2022-01-01
相关资源
最近更新 更多