面试题:进程之间有哪些通信方式?
我的回答:
1.管道
管道分为无名管道和有名管道。无名管道适用于父子进程或者是兄弟进程之间的通信,是单向通信,数据只能是一个方向上流动,例如:数据只能是父进程到子进程。
有名管道是可以没有父子、兄弟关系的进程之间通信,支持全双工通信,即数据可以双向流动。
2.消息队列
消息队列是一个存储消息的链表,提供了一个进程向另一个进程发送块数据的方法。
3.信号量
信号量一般用在进程之间的同步,多个进程访问同一个资源。信号量大于0,说明可以进行访问,如果信号量为0,那么其他进程不能再访问该资源,进程阻塞了。
4.信号
信号是用于传递某些消息或者是通知的。用来处理某些紧急任务或者异常情况。
5.套接字
套接字socket,可以用于不同计算机之间进行网络通信,如果在同一个计算机上的话,可以进行文件通信。
6.共享内存
共享内存是进程之间通信方式中最高效的,多个进程同时访问同一块内存,不需要进程之间复制数据。