Linux上的多进程间通信机制

最近项目需要一个类似于Android上广播通信机制,方便多进程间相互通信,可以是一对多,多对一,或者多对多。

大致如下

Linux现有的进程间通信能用的只有

管道

消息队列

信号量(这个还只能算同步机制)

套接字

但是这几种几乎都只能在两个进程间来回传递,如果要实现多进程间相互通信,需要自己实现一个类似于MsgServer的消息管理服务器,负责接收不同的消息,然后分发给不同的用户。

比如一个按键消息来了,监控输入事件的应用只要将消息发送到消息中心,消息中心再将该消息分发给想获取这个消息的用户,消息的接收分发全部有消息服务器来处理。

 

基于此思想,在linux最简便的方法就是用本地socket来做,socket服务器负责消息处理,所有的客户端都要连接注册上来。

服务器负责维护所有的客户端,以及所有的消息接收和分发。

基本框架如下:

猜你喜欢

转载自www.cnblogs.com/tid-think/p/10613194.html