进程间的通信方式

浏览量:1535
时间: 2024-01-31 11:34:23

管道 

管道是⼀种把两个进程之间的标准输入和标准输出连接起来的机制,可分为⽆名管道和有名管道,⽤于 具有亲缘关系进程间的通信。有名管道克服了没有名字的限制,因此允许⽆亲缘关系进程间的通信。

特点

①只能在有亲缘关系的进程之间进⾏通信,也就是在⽗⼦进程之间通信 ②单向通信,⼀个读端,⼀个写端。如果要双向通信就要建立两个管道 ③接收数据流,与数据格式⽆关 ④⼀般⽽⾔,进程退出时管道即被释放,因此管道的⽣命周期会随进程的关闭⽽消亡 ⑤同步互斥原则,内核会对管道操作进⾏同步和互斥 

⽆名管道参考 

有名管道读操作参考 

有名管道写操作参考


信号

信号机制是UNIX系统中最为古老的进程之间通信机制。它⽤于⼀个进程或多个进程之间传递异步信号, 来通知进程有某种事件发⽣,除了⽤于进程间通信外,使⽤信号还可以使进程发送信号给进程本⾝。信号参考 


消息队列 

消息队列是内核地址空间中的消息的链表,通过Linux内核在进程之间传递内容。消息顺序地发送到消息 队列中,并以⼏种不同的⽅式从队列中获取,每个消息队列可以⽤IPC标识符唯⼀的进⾏标识。不同的消 息队列之间是相互独立的,每个消息队列中的消息构成⼀个独立的链表。有写权限的进程可以对消息队 列添加消息,有读权限的进程可以对消息队列读取信息 

特点

①消息队列克服了信号承载信息量少,管道只能承载⽆格式字节流以及缓冲区⼤⼩受限的缺点。 消息队列 是基于消息的,⽽管道是基于字节流的,且消息队列的读取不⼀定先入先出 

②消息队列中每个消息的最⼤⻓度是有上限的,每个消息队列的总的字节数也是有上限的,系统 上消息队 列的总数也有⼀个上限

消息队列读参考 

消息队列写参考 


共享内存 

共享内存是在多个进程之间共享⼀块内存区域的⼀种进程间的通信⽅式,它是通过在多个进程之间对内 存段进⾏映射的⽅式来实现共享内存的,是进程间通信最快捷的⽅式,之所以最快,是因为共享内存⽅ 式的通信没有中间过程,⽽管道、消息队列等⽅式则是需要将数据通过中间机制进⾏转换。共享内存往 往与其他通信机制(如信号量)结合使⽤,来达到进程间的同步及互斥

特点

①共享内存就是允许两个不相关的进程访问同⼀个内存 ②共享内存是两个正在运⾏的进程之间共享和数据的最有效的⽅式 ③共享内存不提供任何互斥和同步机制,⼀般⽤信号量对临界资源进⾏保护 ④不同进程之间共享的内存通常安排为同⼀段物理内存 


共享内存读参考 

共享内存写参考


信号量 

信号量是⼀种计数器,⽤来控制对多个进程共享的资源所进⾏的访问,它们常常被⽤作⼀个锁机制,在 某个进程正在对特定资源进⾏操作时,信号量可以防⽌另⼀个进程去访问它。简单来说就是信号量是⼀ 个特殊的变量,程序对其访问都是原⼦操作,且只允许对它进⾏P(申请)V(释放)操作


socket

最为⼀般的进程间通信机制。可⽤于不同机器之间的不同进程之间的通信 

image.png

声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。仅供学习交流使用,不构成商业目的。版权归原作者所有,如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时删除。侵权投诉

上一篇

coap
相关推荐HOT
ADC采样前端滤波网络怎么设计

分类:硬件设计经验级别:1-3年难度:中级题型:原理+选型硬件工程师在实验室调试ADC采样电路,测试前端滤波效果本文概述ADC采样前端滤波的核心目的有两个:抗混... 详情>>

2026-08-11 17:44:55
单片机I2C上拉电阻阻值怎么确定?单片机面试别只会说4.7k

分类:单片机工程师面试题经验级别:中级难度:中级题型:通信接口/硬件设计📖 本文概述I2C上拉电阻选型是单片机面试中的基础题,但很多人只会回答4.7千欧。实际... 详情>>

2026-08-06 17:04:37
PCB电源完整性仿真PDN阻抗分析方法 - PCB仿真面试题详解

分类:PCB仿真经验级别:2-5年经验难度:中高级题型:技术分析题本文概述:PDN阻抗分析是PCB电源完整性仿真的核心内容,也是仿真工程师面试的重点题。核心结论... 详情>>

2026-08-18 21:09:26
传导发射测试超标,EMC工程师面试应该怎样排查?

题库分类:EMC电磁兼容 适合经验:1—5年 难度:中高级 题型:测试整改题 + 项目追问题 面试题... 详情>>

2026-07-29 11:13:48
技术岗谈薪时怎样问清楚薪资结构?工程师谈薪注意事项指南

分类:面试技巧与通用知识经验级别:基础难度:★★☆题型:谈薪策略技术岗面试:谈薪与薪资结构注意事项指南本文概述技术工程师谈薪不能只问"月薪多少",必须搞清楚完整... 详情>>

2026-08-08 15:17:33
开班信息