前言
IPC(Inter-Process Communication,进程间通信)
有时候我们需要在不同的程序之间,也就是不同的进程之间进行通讯,那么都有些什么方式呢?通过查阅相关资料,主要有信号、管道、消息队列、共享内存等等
常见的通讯方式
- 套接字Socket:套接字是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。
- 信号量:信号量是一种计数器,主要是用来控制多个进程对共享资源的访问,在锁机制中应用比较多,保证在一个进程对一个资源进行访问的时候,其他进程不能对其进行资源访问
- 信号:信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
- 共享内存:内存共享是最快的IPC方式(SharedMemory)。就是映射一段其他进程也能够进行访问的内存。这一段内存虽然是由一个进程进行创建,但是多个进程都能进行访问。通常和信号量配合使用,来实现进程之间的同步和通信。
- 管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
- 命名管道FIFO:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
- 消息队列MessageQueue:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
以上的任何一点都可以单独拿出来做一篇文章,路漫漫其修远兮
文章中已经写得很好了:)站在了巨人的肩膀上