进程间互相通信方式:
信号
双方间通信,在发送方向接收方发送消息后,接收方可以选择立即接收信号,也可以延迟接收,若接收方处于阻塞状态,则等待阻塞状态完毕后再接收消息进行处理;接收方一般有三种处理方式:
(1)接收到信号后进行默认操作
(2)进行特定操作
(3)不进行操作
在接收到信号后也可以选择阻塞一段时间再进行相应的操作。
管道
管道是一种半双工通信方式,分为两种管道:无名管道和有名管道(1)无名管道:不具有名称的管道,因为不具有名称,所以不被所有进程所共享,一般用于父子进程间通信,若需要双方通信,需要建立两个管道完成。
(2)有名管道:具有名称的管道,创建管道后,可以被系统进程所共享,若具有一定的权限,则可以对管道进行访问。
信号量
信号量用来进行进程间协调,通过对信号量的 p/v 操作来实现进程同步。消息队列
信号队列是发送和接收双方共同维持的一个链表队列,发送方向队列中添加消息,接收方从队列中读取消息,消息种类是多样的,可以为每一条消息设置优先级,但是接收方读取消息的时候可以不按顺序读取。共享内存
在进程外部创建一片内存区域被所有进程锁共享,通过这一片内存区域的修改进行进程间的通信,速度快,但是在多进程共同修改的时候需要注意内存区域的安全问题,就像线程安全问题一样,需要对修改操作进行加锁等操作。