首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >几个相同进程之间的IPC通信

几个相同进程之间的IPC通信
EN

Stack Overflow用户
提问于 2011-04-23 18:51:20
回答 2查看 1.2K关注 0票数 1

上下文: Linux (Ubuntu),C

我在一个盒子上产生了几个相同的极简过程。这些进程正在进行一些网络建设,并将大部分时间停留在poll (或select或其他什么--我可以根据需要进行更改)中。

进程生存期由runitmultiwatch一起监视(如果有变化的话)。

一个随机的进程可能会不时地决定向所有其他进程发送一条消息(即一串数据)(如果它使事情变得更简单的话,也包括它本身)。

而且,人工操作符有时可能希望从命令行发送这样的消息(假设我可以根据需要编写命令行工具)--再次发送到每个进程。

必须保证消息传递。但是它不应该阻止发送者(如果有任何(或所有)收件人突然消失(OTOH,如果他们活着但忙碌,他们最终必须接收消息)。如果收件人进程在轮询中处于空闲状态,则必须由消息唤醒它。

在不增加很多复杂性的情况下,组织这种交流的最健壮的方法是什么?

注意:由于技术原因,我不能使用POSIX信号在进程之间进行通信。

EN

回答 2

Stack Overflow用户

发布于 2011-04-23 19:39:27

广播和可靠的条款是反对的,我认为你必须建立所有可靠的单播连接,并实现“广播”自己。

我编写了一些集群软件,其中局域网上的节点需要找到彼此并建立可靠的通信--这方面的方案如下:

每个进程配置相同的端口号和局域网广播地址( broadcasts

  • Each

  • )每个进程将一个TCP侦听器绑定到一个随机的本地端口

  • ,每个进程绑定到指定的本地UDP端口,侦听进程每隔几秒钟发送一条消息,宣布它的存在,ID (例如PID)和tcp端点,当一个进程发现另一个ID较低的进程时,它会建立到它的TCP连接,并且可以选择地请求一个已知的对等点F 211的列表。

在此之后,每个进程都连接到其他每个进程,您可以手动实现“可靠广播”。

票数 1
EN

Stack Overflow用户

发布于 2017-03-22 03:10:33

我知道这条线很古老,我想答案可能会对外面的人有所帮助。我使用过Kbus,发现它非常适合跨多个进程广播消息。它是一个具有用户库的Linux内核模块,进程需要使用它来创建描述符。使用发布/订阅设计模式,使其成为一个解耦的系统。

来源:https://github.com/kynesim/kbus

博士:https://kbus.readthedocs.io/en/latest/

西米斯

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5766196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档