【嵌入式linux】进程间通信的几种方式
总结
1、pipo:具有亲缘关系的进程间,单工模式,数据在内存内
2、fifo: 可以用于任何进程间,双工,有文件名,数据在内存中。
3、signal:唯一的异步通信方式
4、msg:常常用于cs模型内,按消息类型访问,可有优先级。
5、shm:效率最高(直接访问内存),需要同步互斥机制。
6、sem:配合共享内存使用,用以实现同步和互斥。
管道:
- 无名管道PIPO
- 只能用于亲缘关系的进程间通信
- 半双工的通信模式。
- 有名管道 FIFO
- 可以用于互不相关的两个进程间通信
- 先进先出规则
信号
- 内核产生信号,用户注册信号处理函数,来进行信号事件的处理
共享内存
- 最高效的进程间通信方式,进程可以直接读写内存,不需要任何数据的拷贝
- 多进程通信过程中。内核分配有共同的内存区,需要访问的进程可以将其映射到自己的私有地址空间。
- 但是需要依靠互斥锁或者信号量来保证同步性。防止阻塞。
共享内存实现:
(1)、创建共享内存 shmget();
(2)、映射共享内存。 Shmat()
(3)、撤销共享内存映射 shmdt()
(4)、删除共享内存对象。Shmctl()
消息队列
- 消息队列由消息队列ID来唯一标识
- 消息队列是一个消息的列表,用户可以在队列中添加和读取消息。
- 消息队列可以按照类型来发送/接收消息
消息队列实现。
(1)创建或者打开消息队列 msgget();
(2)发送或者接收消息 msgsnd()/mesrcv()
(3)控制消息队列 msgctl()
信号量
信号量是不同进程或者一个给定进程内部不同线程间同步的机制。
- semget()
- semop()
- semctl();
【嵌入式linux】进程间通信的几种方式相关推荐
- Linux进程间通信的几种方式总结-——linux内核剖析
进程间通信概述 Linux内核通信相关视频讲解:Linux内核,进程间通信组件的实现 linux内核,进程调度器的实现,内核源码分析 进程通信的目的 传输数据 一个进程须要将它的数据发送给还有一个进程 ...
- Linux进程间通信的五种方式
一.管道 二. 信号 三.共享内存 四.消息队列 五.信号量 进程间的通信可分为 传统unix通信方式 和 System V通信方式 . 传统unix通信方式有两大类:管道和信号.其中管道又细分为:有 ...
- 构建嵌入式linux系统_用于构建嵌入式Linux系统的4种工具
构建嵌入式linux系统 Linux正在被部署到比Linus Torvalds在他的宿舍里工作的设备更多的设备中. 受支持的各种芯片架构令人震惊,并导致各种大小的设备都使用Linux. 从庞大的IBM ...
- 嵌入式 Linux进程间通信(四)——Linux系统日志
嵌入式 Linux进程间通信(四)--Linux系统日志 syslog 是一种工业标准的协议,用来记录设备的日志.Linux日志系统由系统日志监控程序syslogd和内核日志监控程序klogd组成,两 ...
- windows系统中查看linux分区的三种方式
双系统中windows查看linux分区的三种方式 一.这个算是大家早有耳闻的啦,就是使用Explore2fs这个工具,可以去 http://www.chrysocome.net/explore2fs ...
- linux远程登录三种方式telnet,ssh,vnc
linux远程连接三种方式telnet,ssh,vnc telnet和ssh服务只能实现基于字符界面的远程控制,如果要基于图形界面进行远程控制,可以借助免费的VNC来完成. 一.telnet连接 1. ...
- android中进程间通信的几种方式
进程间通信(IPC)方式 使用Bundle 使用文件共享 使用Messenger 使用AIDL 使用COntentProvider 使用Socket 一.使用Bundle 我们都知道Android中三 ...
- 一文读懂Python进程间通信的几种方式
为什么进程之间需要通信? 1.数据传输 一个进程需要将它的数据发送给另一个进程; 2.资源共享 多个进程之间共享同样的资源; 3.事件通知 一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事 ...
- win 读 linux分区,windows系统中查看linux分区的三种方式
双系统中windows查看linux分区的三种方式 一.这个算是大家早有耳闻的啦,就是使用Explore2fs这个工具,可以去 官方网站下载,这个工具用法简单就不多说了,如图所示: 二.使用一个叫磁盘 ...
- 嵌入式linux模块复位,单片机嵌入式系统软件复位的几种方式
飞思系列的8位单片机没有特定的控制寄存器可以实现软件复位,当程序运行过程中代码需要强行产生一个复位时必须通过一些软件技巧实现:本文引用地址:http://www.eepw.com.cn/article ...
最新文章
- 一切皆文件的编程思想
- 关于需求管理的胡思乱想---R3PR
- 开源项目 | 五分钟搭建BERT服务,实现1000+QPS
- 动态规划,分治,回溯法,全排列,切片
- C语言、嵌入式重点知识:回调函数
- Serverless在游戏运营行业进行数据采集分析的最佳实践
- vue3 el-form表单验证 自定义校验
- ios授权登录过程中一直提示“没有安装qq”
- Qt总结之十九:Qt中控件new之后需不需要delete的问题
- html页面枚举 暴力,暴力枚举进程模块(示例代码)
- Python实现好友信息管理系统 添加、删除、修改、备注、查询好友信息
- note同步不及时 one_如何提高onenote同步速度?
- 第二证券|A股集体收涨,汽车产业链爆发!房地产延续强势
- java面试常见设计模式
- 漫谈程序员(十六)健康程序猿系列之健康体魄
- 简单介绍函数式编程中的Functor(函子),Applicative(加强版函子),Monad(单子)
- 目前游戏行业内部主要几款游戏引擎的技术对比(转)
- my ReadTravel_Singapore / singapore / xinjiapo / lvyou / travel
- 交换机和路由器的实现原理
- 编码 data:text/html;c,javascript中Data URI使用详解
热门文章
- oracle 快照过旧:回退段号,ORA-01555: 快照过旧: 回退段号 39 (名称为 _SYSSMU39_3029844184$) 过小...
- sourcetree神操作
- ShaderGraph笔记——高光裁切
- 国开电大 管理会计 形考任务
- CSS 实现倒三角形
- android x86评测,异于Win8新体验 x86版Android4.0解析
- 【秋招笔试】小米、美的CV算法岗笔试
- 网狐荣耀子游戏金币存取BUG
- 位图排序算法优化篇-永无止境
- QWT坐标刻度设置时的2个细节