进程间的通信方式有哪些?
进程间通信常见方式如下:
管道
FIFO
消息队列
信号量
共享内存
UNXI域套接字
套接字(Socket)
管道
管道是一种古老的IPC通信形式。
它的特点:
1.它是半双工的,具有固定的读端和写端;
2.它只能用于父子进程或者兄弟进程之间的进程的通信;
3.它可以看成是一种特殊的文件,对于它的读写也可以使用普通的 read、write 等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。
命名管道
FIFO 可以在无关的进程之间交换数据,与无名管道不同;
FIFO 有路径名与之相关联,它以一种特殊设备文件形式存在于文件系统中。
消息队列
基本原理:A 进程要给 B 进程发送消息,A 进程把数据放在对应的消息队列后就可以正常返回了,B 进程需要的时候再去读取数据就可以了。
特点:
- 消息队列是保存在内核中的消息链表,每个消息体都是固定⼤⼩的存储块。如果进程从消息队列中读取了消息体,内核就会把这个消息体删除。
- 如果没有释放消息队列或者没有关闭操作系统,消息队列会⼀直存在。
信号量
3. 信号量(semaphore)是一个计数器。用于实现进程间的互斥与同步,而不是用于存储进程间通信数据;
4. 信号量用于进程间同步,若要在进程间传递数据需要结合共享内存;
5. 信号量基于操作系统的 PV 操作,程序对信号量的操作都是原子操作;
6. 每次对信号量的 PV 操作不仅限于对信号量值加 1 或减 1,而且可以加减任意正整数;
7. 支持信号量组。
共享内存
- 共享内存(Shared Memory),指两个或多个进程共享一个给定的存储区;
- 共享内存是最快的一种 IPC,因为进程是直接对内存进行存取。
Socket
socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。
参考文章:https://www.cnblogs.com/qtiger/p/5856660.html
进程间的通信方式有哪些?相关推荐
- step4 . day7 进程间的通信方式
进程间的通信方式: 无名管道(pipe) 有名管道 (fifo) 信号(signal) system v5的进程间通信方式 共享内存(share memory) 消息队列(message queue) ...
- msgget();msgsnd();msgrcv();msgctl(); 消息队列 Linux进程间的通信方式之消息队列
Linux进程间的通信方式 ----消息队列. 消息队列和共享内存类似 消息队列它允许一个或多个进程向它写消息,一个或多个进程向它写读消息. 消息队列存在于系统内核中,消息的数量受系统限制. 我们来看 ...
- unix进程间的通信方式
unix进程间的通信方式 (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信. (2)命名管道(named pipe):命名管道克服了管道 ...
- 1、几种进程间的通信方式
1.几种进程间的通信方式 # 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系通常是指父子进程关系. # 有名管道 (named ...
- 共享内存(进程间的通信方式)
目录 1.共享内存的特点 2.函数接口 3.有关共享内存的系统命令 1.共享内存的特点 (1)共享内存是一种最高效的进程间的通信方式,进程可以直接读写内存,而进程之间不需要通过任何数据的拷贝. (2) ...
- 进程间基于消息队列的通信_Linux 进程间的通信方式
(一)进程的概念 进程是操作系统的概念,每当我们执行一个程序时,对于操作系统来讲就是创建一个进程,在这个 过程中伴随着资源的分配和释放,可以认为进程是一个程序的一次执行过程. (二)进程间通信的概念 ...
- 进程间的通信方式(二):管道Pipe和命令管道FIFO
1.概述 管道是最初的Unix IPC通信,可追溯到1973年的Unix第三版.尽管对于许多操作来说很有用,但它们的根本局限于没有名字,只能由亲缘关系的进程使用.这一点随着FIFO的加入System ...
- 几种进程间的通信方式
# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系通常是指父子进程关系. # 有名管道 (named pipe) : 有名管道也 ...
- Linux 进程 | 进程间的通信方式
文章目录 管道 匿名管道 pipe 命名管道 FIFO 共享内存 共享内存的使用流程: 消息队列 信号量 套接字 在之前的博客中讲过,虚拟空间出现的其中一个目的就是解决 进程没有独立性,可能访问同一块 ...
- Windows进程间各种通信方式浅谈(转)
转自 https://blog.csdn.net/microzone/article/details/7044266 权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原 ...
最新文章
- 青龙羊毛——快手(普通版)
- ADF任务流:页面片段的托管bean范围
- access集团和abm_abm年度盛典,12月份,中国、澳大利亚、新西兰三地同时举办,abm各渠道运营商从全球各地赶来参会!...
- 注解、垃圾回收和线程
- 【每日一博】asynchat 异步socket命令/响应处理器
- Halcon之 Variation Model(转)
- STM32管脚的复用和重定义功能(RCC_APB2Periph_AFIO)
- java中file系统找不到指定的路径_java.io.FileNotFoundException: (系统找不到指定的路径。)怎么处理...
- JS中利用AJAX调用淘宝API获取网络时间的方法
- 国外14部经典励志电影推荐
- Spark综合项目:企业电商分析平台
- ARM裸机开发——双机异步串行通信
- Visual and Object Geo-localization: A Comprehensive Survey
- 应急响应 | Windows事件ID及解释大全
- 在外公网调阅公司内网资料文件【内网穿透】
- coloros11跟Android,ColorOS11好不好用 ColorOS11升级使用体验
- java开发台球的图片_Java模拟桌球打击处理及绘制
- 新中大SE(ngpower)反月结、反记账
- python 资源文件_如何用 Python 正确读取资源文件
- Python办公自动化实战 13 | Python-docx库:Python与Word的完美结合_学员考试准考证批量生成