当前位置:网站首页>进程之间的通信方式

进程之间的通信方式

2022-06-26 03:09:00 草原上唱山歌

管道:是一种半双工方式,数据单方向流动,只能在有亲缘关系的进程间使用。它是基于内核的,可以把它当作内核缓冲区。在用户空间与内核进行交换数据需要进行四次拷贝,用户空间—>内核,内核—>内存,内存—>内核,内核—>用户空间,这里为什么要拷贝到内核呢?因为数据都是在内存中执行。在管道的数据只能被读取1次,读取之后缓冲区就不存在了,它只能承载没有格式的字节流。
命名管道:与管道类似,但是它支持没有亲缘关系的进程也可以访问(所有进程都可以访问),命名管道的名字对应磁盘索引节点。
消息队列:即消息链表,是一系列保存在内核中的消息链表,交换数据也是需要进行4次拷贝。它的优势是可以对每个消息指定特定的消息类型,接收方可不按照队列的次序获取。
共享存储:映射一段可以被其它进程访问的内存块,即内存共享,由一个进程创建,多个进程访问。用它传递数据只需要拷贝三次,即用户空间—>内存—>用户空间。
信号量:控制多个进程对共享资源的访问,可以用之进程或线程同步。
信号:是一种比较复杂的通信方式,通知接收进程某个事件已经发生了。
套接字Socket:套接字Socket是通信的基石,它是基于TCP/IP协议的网络通信的基本操作单元,是对网络通信过程中端点的抽象表示,包含网络通信的五种信息:连接使用协议、本地IP地址、本地进程的协议端口、远程IP地址、远程进程的协议端口。

原网站

版权声明
本文为[草原上唱山歌]所创,转载请带上原文链接,感谢
https://blog.csdn.net/shanniuliqingming/article/details/125423517