![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
进程间通信
文章平均质量分 90
嵌入式软件工程师
这个作者很懒,什么都没留下…
展开
-
Linux系统编程之进程间的通信方式(无名管道与命名管道)
进程间的五种通信方式(IPC): 1、管道(无名管道),速度慢,容量有限,只有父子进程能通讯;2、FIFO(命名管道),任何进程间都能通讯,但速度慢;3、消息队列,容量受到系统限制;4、信号量,不能传递复杂消息,只能用来同步;5、共享内存区。 一、管道: 管道:通常指无名管道,是UNIX系统中IPC最古老的形式。 1.特点: 它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。 它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)。 它可以看成是一种特殊的文件,对于它的读写也原创 2022-05-10 15:14:27 · 292 阅读 · 0 评论 -
Linux系统编程之进程间的通信(信号量)
前言: 信号量的相关概念: 信号量:主要用于同步与互斥。为了防止出现因多个进程访问临界资源而引发的一系列问题,信号量可以提供这样一种访问机制,在任一时刻只能有一个执行线程访问代码的临界区域,也就是说信号量是用来协调进程对临界资源的访问。 信号量的操作:信号量是一种特殊的变量,对信号量的访问必须是原子操作,信号量的操作只有两种:P操作(-1,申请资源)和V操作(+1,释放资源)。最简单的信号量只有两种取值0和1,称这样的信号量为二元信号量。可以取值为正整数N的信号量称为多元信号量,它允许多个线程并发的访问资源原创 2022-05-16 21:01:47 · 593 阅读 · 0 评论 -
Linux系统编程之进程间通信(信号)
信号(signal): 信号的基本概念: 信号是事件发生时对进程的通知机制,有时也叫软件中断,信号可以让一个正运行进程被另一个运行进程异步进程中断,转而处理某突发事件。 注意:信号的产生和处理都是由内核完成 简单说一下使内核为进程产生信号的事件有: 1 终端发特殊字符,如CTRL+C 对前台进程发送中断信号 2 硬件发生异常,如被0除等异常机器语言指令。 3 系统状态变化:如alarm定时器到期引起SIGALRM信号,进程某个子进程退出 4 运行kill 命令/函数。 信号使用的目的: ...原创 2022-05-16 16:44:41 · 261 阅读 · 0 评论 -
Linux系统编程之进程间通信(共享内存)
前言:首先说一下共享内存实现进程间通信的基本原理,共享内存实际是操作系统在实际物理内存中开辟的一段内存。 共享内存实现进程间通信,是操作系统在实际物理内存开辟一块空间,一个进程在自己的页表中,将该空间和进程地址空间上的共享区的一块地址空间形成映射关系。另外一进程在页表上,将同一块物理空间和该进程地址空间上的共享区的一块地址空间形成映射关系。 看上图,一个进程往该共享内存空间写入内容时,另一个进程也可以访问到这个共享内存空间,读取到一个进程写入的内容,相反也可,这就实现了两个进程间的通信。要实现进程间通信需原创 2022-05-12 21:57:08 · 377 阅读 · 0 评论 -
Linux系统编程之进程间的通信(消息队列)
一、消息队列 (1) 消息队列是进程间通信的一种方式,遵循先进先出的原则,保证了时间的顺序性。拥有该消 息队列读权限的进程可以从消息队列读出数据,拥有该消息队列写权限的进程可以向消息队列发送数据。 (2)消息作为节点一个一个地存放在消息队列里,可把消息队列比作信箱,消息比作依次顺序存放的信件。地址比作消息类型,内容为消息。支持双向传输,可以使用消息类型区分不同的消息。,其实消息队列说白了就是用来存放消息的链表。 (3)消息队列不再局限于父子进程,在任何两个进程间都能通信。 重要提示: 消息队列是linu原创 2022-05-12 16:25:02 · 1276 阅读 · 0 评论