linux的进程间通信概述
一 进程间通信
1.1. linux内核提供多种进程间通信机制
a. 无名管道和有名管道
b. SystemV IPC:信号量、消息队列、共享内存
c. Socket域套接字
d. 信号
1.2. 无名管道和有名管道
1.2.1. 管道(无名管道)
a. 管道通信的原理:内核维护的一块内存,有读端和写端(管道是单向通信的)
b. 管道通信的方法:父进程创建管理后fork子进程,子进程继承父进程的管道fd
c. 管道通信的限制:只能在父子进程间通信、半双工
d. 管道通信的函数:pipe、write、read、close
1.2.2. 有名管道(fifo)
a. 有名管道的原理:实质也是内核维护的一块内存,表现形式为一个有名字的文件
b. 有名管道的使用方法:固定一个文件名,2个进程分别使用mkfifo创建fifo文件,然后分别open打开获取到fd,然后一个读一个写
c. 管道通信限制:半双工(注意不限父子进程,任意2个进程都可)
d. 管道通信的函数:mkfifo、open、write、read、close
1.3. SystemV IPC介绍
1.3.1. SystemV IPC的基本特点
a. 系统通过一些专用API来提供SystemV IPC功能
b. 分为:信号量、消息队列、共享内存
c. 其实质也是内核提供的公共内存
1.3.2. 消息队列
a. 本质上是一个队列,队列可以理解为(内核维护的一个)FIFO
1.3.3. 信号量
a. 实质就是个计数器(其实就是一个可以用来计数的变量,可以理解为int a)
b. 通过计数值来提供互斥和同步
1.3.4. 共享内存
a. 大片内存直接映射
b. 类似于LCD显示时的显存用法
linux的进程间通信概述的更多相关文章
- linux进程间通信概述
一个大型的应用系统,往往需要众多进程协作,进程间通信的重要性显而易见. 进程间通信有如下一些目的: 数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间. 共享数据: ...
- Linux环境进程间通信(四):信号灯
linux下进程间通信的几种主要手段: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允 ...
- Linux环境进程间通信(一):管道及命名管道
linux下进程间通信的几种主要手段: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允 ...
- linux 设备驱动概述
linux 设备驱动概述 目前,Linux软件工程师大致可分为两个层次: (1)Linux应用软件工程师(Application Software Engineer): 主要利用C库函数和 ...
- <转>Linux环境进程间通信--信号灯(四)
http://www.ibm.com/developerworks/cn/linux/l-ipc/part4/ 一.信号灯概述 信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机 ...
- 浅析Linux下进程间通信:共享内存
浅析Linux下进程间通信:共享内存 共享内存允许两个或多个进程共享一给定的存储区.因为数据不需要在客户进程和服务器进程之间复制,所以它是最快的一种IPC.使用共享内存要注意的是,多个进程之间对一给定 ...
- 【转载】Linux的进程间通信-信号量
原文:Linux的进程间通信-信号量 Linux的进程间通信-信号量 版权声明: 本文章内容在非商业使用前提下可无需授权任意转载.发布. 转载.发布请务必注明作者和其微博.微信公众号地址,以便读者询问 ...
- <转>Linux环境进程间通信(二): 信号(上)
原文链接:http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html 原文如下: 一.信号及信号来源 信号本质 信号是在软件层 ...
- Linux 环境进程间通信(六):
linux下进程间通信的几种主要手段: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允 ...
随机推荐
- python接口自动化七(重定向-禁止重定向Location)
前言 某屌丝男A鼓起勇气向女神B打电话表白,女神B是个心机婊觉得屌丝男A是好人,不想直接拒绝于是设置呼叫转移给闺蜜C了,最终屌丝男A和女神闺蜜C表白成功了,这种场景其实就是重定向了. 一.重定向 1. ...
- 9 斐波那契数列Fibonacci
题目1:写一个函数,输入n,求Fibonacci数列的第n项.该数列定义如下: n=0时,f(n)=0; n=1时,f(n)=1; n>1时,f(n)=f(n-1)+f(n-2) 1. 效率差的 ...
- linux查杀minergate-cli/minerd病毒
redis的漏洞让公司的服务器中了挖矿的病毒,入侵者在服务器上留了后门.每次只是把进程杀杀,但是过段时间病毒又回来了,这个事情一直让人头疼.先是minerd的病毒入侵,后是minergate-cli入 ...
- js 创建节点
//获取对象 console.log(obj)//字符串转对象 var ob = JSON.parse(data); //对象转为字符串 console.log(JSON.stringify(obj) ...
- Module——模块加载语法
简介:标准module用法: 模块功能主要由两个命令构成:export和import. export有三种写法: // profile.js // 写法一 export var m = 1; // 写 ...
- sklearn 的 PolynomialFeatures 的用法
官方文档:http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.PolynomialFeatures.html ...
- 步步向前之Element-UI
Table 固定表头 只要在el-table元素中定义了height属性,即可实现固定表头的表格,而不需要额外的代码.例如: <el-table :data="tableData3&q ...
- centos7 开机启动运行脚本
/etc/profile.d 下建立一个xxxname.sh
- mini dc(选做)
一.题目要求 提交测试截图和码云练习项目链接,实现Linux下dc的功能,计算后缀表达式的值 二.源代码 1.MyDC类 import java.util.StringTokenizer; impor ...
- bat实践小集
查找当前文件夹下的exe和bat文件,并存储到txt中 for /f "tokens=4 delims= " %a in ('dir ^| findstr "^.exe ...