unix系统中,可以用于进程间的通信的机制
首先,个人主要写的是服务器代码,主要使用的是,主机间用socket、或者消息队列,同一主机之间用消息队列,控制通信使用socket,反正主要还是用的这俩居多,不过有的时候还是会使用内存共享,其他的机制,恕我无知,我真的没怎么用过。
socket主要是非阻塞式,消息队列主要用的是开源的zeromq(我使用的C/C++),共享内存和内存映射主要用于同一主机间消息量很多的场景,但需要注意使用锁。
大概介绍
- 管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。
- 命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。
- 信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)。
- 消息(Messageÿ