进程间常见的通信方式
- 管道/匿名管道:父子进程/兄弟进程之间的通信方式
没有名字的管道如何通信,当然是亲近的进程之间
- 有名管道:任意进程间可以通信。严格遵守FIFO(先进先出)原则,并以磁盘文件的方式存在
有名字了,都可以联系了
- 信号(signal):用于通知接受进程某个事件发生了
“给一个信号”呗,代表发生了什么
- 消息队列(message queue):消息的链表。既然是队列当然也服从FIFO(先进先出原则)
消息队列克服了信号承载信息量少的问题,信号只是一个简单的通知
- 信号量:
- 信号量是一个计数器,用于多进程对共享数据的访问
- 信号量的目的:进程间的同步
- 信号量的通信方式:用于解决与同步相关的问题并避免发生竞争关系
- 共享内存(sharing memory):进程间最有用的通信方式
- 使得多进程可以访问同一块内存空间
- 不同进程可以及时看到对方进程对共享数据的操作
- 共享内存需要依赖某种同步操作(例互斥锁、信号量)
- 套接字(Sockets):TCP/IP通信方式,客户端与服务器端进程之间的网络通信。简单的说:不同主机进程之间用套接字中的相关函数完成通信过程
传输层的主体就是进程