进程间通信的方式有哪些各自的优缺点
发布网友
发布时间:2022-04-29 07:35
我来回答
共1个回答
热心网友
时间:2022-06-21 05:09
进程间通信主要包括管道, 系统IPC(Inter-Process Communication,进程间通信)(包括消息队列,信号,共享存储), 套接字(SOCKET).
管道包括三种:
1)普通管道PIPE, 通常有两种*,一是单工,只能单向传输;二是只能在父子或者兄弟进程间使用.
2)流管道s_pipe: 去除了第一种*,为半双工,可以双向传输.
3)命名管道:name_pipe, 去除了第二种*,可以在许多并不相关的进程之间进行通讯.
--》管道、有名管道
管道是单向的,先进先出,提供了简单的流控制,进程读空管道或者写满管道,都将造成进程阻塞
管道包括无名管道和有名管道,前者用于父子间进程通信,后者用于任意两个进程间通信
--》信号
信号产生的条件:按键、硬件异常、进程调用kill函数将信号发送给另一个进程、用户调用kill命令将信号发送给其他进程,传递的消息比较少,主要是通知消息
--》消息队列
一个消息链表,可以把消息看作一个记录,具有特定的格式,进程可以向队列中添加消息或者读走消息,有缓冲区
--》共享内存
共享内存就是映射一段可以被其他进程访问的内存,这段共享物理内存由一个进程创建,但是多个进程都可以访问,共享内存是进程间共享数据的一种最快的方法
--》信号量
主要用于保护临界资源,进程可以根据它来判断是否能够访问某些公共资源,除了用于反复问控制外,还可以用于进程同步,相当于计数器
--》套接字
可以用于不同进程间的通信。
流式套接字:提供可靠的,面向连接的通讯流
数据包套接字:定义一种无连接的服务,通过相互独立的报文进行传输,是无序的
原始套接字:用于新的网络协议的测试