![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux 进程间通信
文章平均质量分 73
点灯小哥
这个作者很懒,什么都没留下…
展开
-
进程间通信(五)信号量
信号量信号量(semaphore)与已经介绍过的 IPC 结构不同,它是一个计数器。信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。1、特点 信号量用于进程间同步,若要在进程间传递数据需要结合共享内存。 信号量基于操作系统的 PV 操作,程序对信号量的操作都是原子操作。 每次对信号量的 PV 操作不仅限于对信号量值加 1 或减 1,而且可以加减任意正整数。 支持信号量组。 2、原型最简单的信号量是只能取 0 和 1 的变量,这也是信号量最.转载 2021-04-05 13:59:22 · 334 阅读 · 0 评论 -
进程间通信(四)信号 入门signal&kill 高级sigaction&sigqueqe
Linux 信号(signal)对于 Linux来说,实际信号是软中断,许多重要的程序都需要处理信号。信号,为 Linux 提供了一种处理异步事件的方法。比如,终端用户输入了 ctrl+c 来中断程序,会通过信号机制停止一个程序。信号概述 信号的名字和编号: 每个信号都有一个名字和编号,这些名字都以“SIG”开头,例如“SIGIO ”、“SIGCHLD”等等。 信号定义在signal.h头文件中,信号名都定义为正整数。 具体的信号名称可以使用kill -l来查看信号的名字以及序号,信号是转载 2021-04-05 12:12:40 · 327 阅读 · 0 评论 -
进程间通信(三)共享内存 shm系列函数
共享内存共享内存(Shared Memory),指两个或多个进程共享一个给定的存储区。1、特点1. 共享内存是最快的一种 IPC,因为进程是直接对内存进行存取。2. 因为多个进程可以同时操作,所以需要进行同步。3. 信号量+共享内存通常结合在一起使用,信号量用来同步对共享内存的访问。2.原型1 #include <sys/shm.h>2 // 创建或获取一个共享内存:成功返回共享内存ID,失败返回-13 int shmget(key_t key, siz.原创 2021-04-03 16:42:45 · 644 阅读 · 0 评论 -
进程间通信(二)消息队列 msg系列函数 key的ftok函数
消息队列消息队列,是消息的链接表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标识。1、特点 消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级。 消息队列独立于发送与接收进程。进程终止时,消息队列及其内容并不会被删除。 消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取。 如何创建一个新的消息队列1.B程序如何加消息队列2.A程序如何从队列拿到消息A B 使用同一个队列通信程序A .转载 2021-04-03 15:22:20 · 611 阅读 · 0 评论 -
进程间通信(一)管道的pipe函数 FIFO的mkfifo函数
进程间通信进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。以Linux中的C语言编程为例。一、无名管道一、管道管道,通常指无名管道,是 UNIX 系统IPC最古老的形式。1、特点:它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。转载 2021-04-03 12:07:11 · 1722 阅读 · 0 评论