2014025630《嵌入式程序设计》第七周学习总结

教材学习内容总结

有名管道(FIFO)
命名管道也被称为FIFO文件,是一种特殊的文件。由于linux所有的事物都可以被视为文件,所以对命名管道的使用也就变得与文件操作非常统一。
无名管道应用的一个重大限制是它没有名字,因此,只能用于具有亲缘关系的进程间通信,在有名管道(named pipe或FIFO)提出后,该限制得到了克服。FIFO不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。这样,即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过FIFO相互通信(能够访问该路径的进程以及FIFO的创建进程之间),因此,通过FIFO不相关的进程也能交换数据。值得注意的是,FIFO严格遵循先进先出(first in first out),对管道及FIFO的读总是从开始处返回数据,对它们的写则把数据添加到末尾。它们不支持诸如lseek()等文件定位操作。
管道的缓冲区是有限的(管道制存在于内存中,在管道创建时,为缓冲区分配一个页面大小)
管道所传送的是无格式字节流,这就要求管道的读出方和写入方必须事先约定好数据的格式,比如多少字节算作一个消息(或命令、或记录)等等
FIFO往往都是多个写进程,一个读进程。
消息队列
“消息队列”是在消息的传输过程中保存消息的容器。消息被发送到队列中。“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。
函数格式
msgsnd()函数语法要点

msgsnd()函数原型为:
int msgsnd(int msqid, const void msgp, size_t msgsz, int msgflg)
msqid:消息队列的队列 ID
msgp:指向消息结构的指针。
msgsz:消息正文的字节数(不包括消息类型指针变量)
msgflg:若为IPC_NOWAIT 若消息无法立即发送(比如:当前消息队列已满),函数会立即返回。若为0: msgsnd 调阻塞直到发送成功为止。

msgrcv()函数语法要点

msgrcv()函数原型为:
int msgrcv(int msgid, void *msgp, size_t msgsz, long int msgtyp, int msgflg)
msqid:消息队列的队列 ID
msgp:消息缓冲区, 同于 msgsnd()函数的 msgp
msgsz:消息正文的字节数(不包括消息类型指针变量)
msgtyp:0:接收消息队列中第一个消息;大于 0:接收消息队列中第一个类型为 msgtyp 的消息;小于 0:接收消息队列中第一个类型值不小于 msgtyp 绝对值
且类型值又最小的消息
msgflg:MSG_NOERROR:若返回的消息比 msgsz 字节多,则消息就会截短到 msgsz 字节,且不通知消息发送进程;IPC_NOWAIT 若在消息队列中并没有相应类型的消息可以接收,则函数立即返回;0: msgsnd()调用阻塞直到接收一条相应类型的消息为止。

其他(感悟、思考等,可选)

本周的学习让我学会了有名管道读与写的操作,学会了四个重要函数,为以后的学习奠定了良好的基础

参考资料

  • 《嵌入式应用程序设计》学习指导
  • ...

转载于:https://www.cnblogs.com/wly4/p/7003557.html

2014025630《嵌入式程序设计》第七周学习总结相关推荐

  1. 2014025650《嵌入式程序设计》第一周学习总结

    2014025650<嵌入式程序设计>第一周学习总结 教材学习总结 本周开始上嵌入式程序设计课,在开始学习的时候,老师带领我们复习一下Linux操作系统的一些命令操作符. 教材学习中的问题 ...

  2. 2014025689《嵌入式程序设计》第一周学习总结

    这一周主要学习了vim的使用和Linux的一些基本的操作,并在电脑上操作 一.vim的基本指令 vi的使用 创建目录的命令:mrkdir+目录 将一个目录下的文件拷贝到另一个目录下:cp /原目录 / ...

  3. 2014025687《嵌入式系统程序设计》第七周学习总结

    学号2014025687(29) <嵌入式程序设计>第七周学习总结 教材学习内容总结 8.2.5 有名管道FIFO 也叫FIFO(先进先出) 与无名管道的区别:它可以使互不相关的两个进程实 ...

  4. 20155319 2016-2017-2 《Java程序设计》第七周学习总结

    20155319 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 第十二章 Lambda 如果使用JDK8的话,可以使用Lambda特性去除重复的信息. 在只 ...

  5. 20172301 《程序设计与数据结构》第七周学习总结

    20172301 <程序设计与数据结构>第七周学习总结 教材学习内容总结 二叉查找树是一种含有附加属性的二叉树,其左孩子小于父结点,父结点小于或者等于右孩子. 用链表实现二叉查找树 add ...

  6. 20155213 2016-2017-2 《Java程序设计》第七周学习总结

    20155213 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 Lambda 如果使用JDK8的话,可以使用Lambda特性去除重复的信息. 在只有Lamb ...

  7. 20172324 2018-2019-1 《程序设计与数据结构》第七周学习总结

    20172324 2018-2019-1 <程序设计与数据结构>第七周学习总结 教材学习内容总结 概述 二叉查找树是一种含有附加属性的二叉树,即其左孩子小于父节点,而父节点又小于等于其右孩 ...

  8. 20172330 2017-2018-1 《Java程序设计》第七周学习总结

    学号 2017-2018-1 <程序设计与数据结构>第七周学习总结 教材学习内容总结 这一章主要是对继承的学习: 继承是组织和创建类的基本技术,概念简单但影响重大,决定着面向对象软件的设计 ...

  9. 20172332 2017-2018-2 《程序设计与数据结构》第七周学习总结

    20172332 2017-2018-2 <程序设计与数据结构>第七周学习总结 教材学习内容总结 第十一章 二叉查找树 1.二叉查找树:一种带有附加属性的二叉树.即每个结点其左孩子都要小于 ...

最新文章

  1. 点一下按钮调两次接口?浅谈接口设计的幂等性
  2. 基于python的快速傅里叶变换FFT(二)
  3. Lintcode--1(463)--整数排序
  4. java文本框双击可编辑_java swing 文本域双击变为可编辑
  5. 登陆窗体相关的控件 1124
  6. Bootstrap3 模态对话框的方法
  7. php排序算法算法,PHP排序算法之基数排序(Radix Sort)实例详解
  8. 分析优秀的.NET 文档设计工具Vsdocman 7.1 软件保护技术
  9. VMware虚拟机下网络连接的三种模式
  10. easyui 分页保存checkbox的选中状态
  11. HighCharts:plotLines基准线与数据相差过大不显示
  12. pycharm连接github
  13. 烽火超微信息科技 服务器,智算升级 烽火超微发布新一代V6服务器
  14. V2X协议栈介绍及说明(含框图)
  15. 海上风电消防火灾报警系统中消防主机超远距离联网方案
  16. 玩转docker之mysql容器(常见问题汇总-续更)
  17. 01-线性回归sklearn实现
  18. 文献管理软件zotero发布ios版本,支持webdav同步并且内置pdf阅读器
  19. 14、守护线程(thread.setDaemon(true))
  20. 汽车以太网测试之UpperTester

热门文章

  1. 联想e470无线网卡驱动_笔记本显示已关闭无线功能,请问怎样打开?谢谢!
  2. github(入门),不入门找卢姥爷
  3. 什么叫预判_什么才是真正的用户画像?
  4. python众数问题给定含有n个元素的多重集合s_2-1 问题描述:给定含有n个元素的多重集合S - 下载 - 搜珍网...
  5. 隐藏html表格边框显示,table显示所有边框 table的边框怎么显示不出来
  6. 自考计算机网络技术一,2017自考计算机网络技术填空题「附答案」
  7. 从python开始学编程pdf 解压密码_从Python开始学编程PDF高清完整版网盘免费分享...
  8. 从零开始学习docker(九)持久化存储和数据共享之 bind Mounting
  9. 深入理解javascript原型和闭包(18)——补充:上下文环境和作用域的关系
  10. 做 SQL 性能优化真是让人干瞪眼