进程间通信(零)——说明

文章介绍了进程间通信的基础知识,包括管道(无名和有名)、信号的使用、共享内存的优势、信号量在同步中的作用,以及消息队列和网络通信在进程交互中的角色。重点阐述了各种通信方式的特点和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系列文章目录

进程间通信(零)——说明
进程间通信(一)——管道
进程间通信(二)——信号
进程间通信(三)——共享内存
进程间通信(四)——信号量



前言

编程语言中,进程都是存在自己的用户空间的,而内核空间都所有进程共享的区域,因此内核就是进程间实现通信的“通道”。


一、进程间通信的概念?

进程间通信,简称IPC,全程inter process communication。规定了包括管道、信号、共享内存、信号量、消息队列和网络通信等方式。
在这里插入图片描述

二、基本说明

1.管道

管道实现最简单,但是效率比较差,主要用于低数据量的情况。

管道就是申请内核一块缓存,进程创建管道后,Linux会给一个write和read段的描述符,直接操作既可

管道根据进程的“亲疏”,可以细分为无名管道和有名管道。

Note:
1、管道采取半双工通信,1条管道当前只能支持一个进程写操作,另一个进程读操作
2、读进程会一直阻塞,知道写进程的数据写完,反之亦然。

2.信号

Linux用于响应各类事件的信号,我们在Linux系统输入kill -l命令可以查看到。

常用的操作
1、代码捕捉ctrl+c(产生SIGINT信号),然后退出程序
2、app运行时,通过ps查看进程号,然后通过kill -9 PID可以直接杀死进程

3.共享内存

共享内存的进展,在内核开辟一块空间(物理内存),将其映射到不同的用户进程(虚拟内存)中(通过返回的地址操作)。

这样做的好处是,可以解决消息队列在内核态和用户态数据拷贝时的问题。

4.信号量

共享内存操作时,可能存在数据拷贝不同步的问题,信号量就是解决进程同步存在的。

5.消息队列

消息队列解决了管道中进程间数据交互的对接问题。写进程写好数据后就可以直接返回,只要读进程去读取就可以了。
消息队列要求读写双方遵循一个约定好的消息体格式

6.网络通信

前面5中进程通信都是基于同一台主机的,限制性较大。而网络通信推动了人类可以跨越现实距离,通过网络和其他主机进行通信。

三、总结

此篇作为开章,主要说明了关于进程间通信的基础概念。后续会根据知识点展开讲解这些内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值