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

一、管道

本周我们学习了管道  消息队列的传输和接收

1.管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。

2.信息队列(Messge Queue):消息队列的实现包括创建或打开消息队列、添加消息、读取消息和控制消息队列这 4 种操作。其中创建 或打开消息队列使用的函数是 msgget(),这里创建的消息队列的数量会受到系统消息队列数量的限制; 添加消息使用的函数是 msgsnd()函数,它把消息添加到已打开的消息队列末尾;读取消息使用的函数是 msgrcv(),它把消息从消息队列中取走,与 FIFO 不同的是,这里可以指定取走某一条消息;最后控制消 息队列使用的函数是 msgctl(),它可以完成多项功能。

3.特点
①它只能用于具有亲缘关系的进程之间的通信(也就是父子进程或者兄弟进程之间)。
②它是一个半双工的通信模式,具有固定的读端和写端。

③ 管道也可以看成是一种特殊的文件,对于它的读写也可以使用普通的 read()和 write()等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内核的内存空间中。

标准管道流 用于文件流模式popen ;原型FILE popen char command char type ; 如果调用成功 则返回一个文件流 如果无法创建则返回NULL 该函数主要用于执行外部程序 command参数是一个指向以NULL结束的shell命令字符串的指针。 其中type参数是用来表示读或者写的 不能同时为读和写 管道将会以参数type的第一个字符代表的方式打开 popen打开的数据管道流可以使用pclose 关闭 popen pclose用于打开和关闭数据流 如果pclose FILE stream 调用失败 则返回 1;注意 在使用pclose时并不是立即关闭管道流 而是等待管道流的管道流进程结束"

msgget()函数的语法要点:

时间: 2024-10-12 07:41:42

2014025665《嵌入式程序设计》第七周学习总结的相关文章

2014025689 嵌入式程序设计 第七周学习总结

嵌入式程序设计 第七周   第七周课程主要学习了有名管道和消息队列的传输和接收.   一丶有名管道   有名管道和无名管道的区别: 1.  有名管道定义:可以使互不相关的两个进程实现彼此通信的管道就是有名管道.有名管道可以通过路径名来指出,并且在文件系统中是可见的.在建立了管道之后,两个进程就可以把它当作普通文件一样进行读写操作,使用非常方便.不过值得注意的是,FIFO 是严格地遵循先进先出规则的,对管道及 FIFO 的读总是从开始处返回数据,对它们的写则把数据添加到末尾,它们不支持如 lsee

2014025644 嵌入式程序设计 第七周学习总结

嵌入式程序设计 第七周 有名管道 有名管道和无名管道的区别 (1) 无名管道:管道是半双工的,数据只能向一个方向流动:需要双方通信时,需要建立起两个管道:只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程). 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中. 数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出.写入的内容每次都添加在管道缓冲区的末尾,并且每次都是

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

学习总结 1.安装软件以及初识linux总结 <嵌入式程序设计>这门课程开了一周,我从没有安装软件到能够写一个简单的程序,这其中有很多的问题,刚开始安装软件时安装软件有很多的错误,以至于重装了一次系统,由于种种原因上课时没能跟上老师的步伐进行复习,好在在课下的时候找时间都进行了练习,复习了一下以前的操作符命令. 2.上课编程作业 利用gcc打印hello word vi命令是新建一个文件 ls命令是显示列表 3.实验楼作业 在linux中,最重要的是命令,包含了两个过程,就是输入和输出 输入就

201405644 嵌入式程序设计第五周学习总结

嵌入式课程设计第五周学习总结 标准 I/O 编程 标准 I/O 提供流缓冲的目的是尽可能减少使用 read()和 write()等系统调用的数量.标准 I/O 提供了 3 种类型 的缓冲存储.全缓冲.行缓冲.不带缓冲. 打开文件 打开文件有三个标准函数,分别为:fopen().fdopen()和 freopen().其中 fopen()可以指定打开文件的路径和模式,fdopen()可以指定打开的文件描述符和模式,而 freopen() 除可指定打开的文件.模式外,还可指定特定的 I/O 流. f

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

这一周主要学习了vim的使用和Linux的一些基本的操作,并在电脑上操作 一.vim的基本指令 vi的使用 创建目录的命令:mrkdir+目录 将一个目录下的文件拷贝到另一个目录下:cp /原目录 /新目录 进入目录:cd+目录 设定行号命令:set number 移至指定行:行号G 删除行:dd 复制该行:将光标移到该行yy 粘贴:p 将光标移到最后一行行首:G或者shift+g 撤销:u 光标移动到指定字符:/+指定字符 gcc编译的操作方法 gcc test.c -o test gcc -

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

本周学习内容 通过本次的实验和第一周的课程,让我对linux有了基本我了解.在上课的过程中和实验时,使我对linux有了非常大的兴趣.操作系统的出现解决了电脑上程序上的问题,在最开始的操作系统,它是非常有局限性的,浪费时间,浪费了精力.UNIX的出现是非常必要的,UNIX 实现了 TCP/IP 协议栈,成为了早期工作站的操作系统的一个流行选择.在大学校园里,它成为了主流,但随之而来的是价格的提高.昂贵的价格让许多计算机专业的人感到苦恼.于是,LINUX 的出现显得格外珍贵.LINUX支持Wind

2014025627 《嵌入式程序设计》第二周学习总结

教材学习内容总结 通过本周的学习,我学会使用gcc编译器.使用GDB调试器和C程序的编写. 通过做实验楼的实验,我对基本操作有了一定的实践和了解. 一开始总是打错,但后来慢慢改正了. 在这遇到了问题,没有某个文件或目录 改正后输出了正确结果 第二个实验是练习Makefile,通过这个实验,我学会Makefile基本规则,熟悉使用make命令的方法并学会使用Makefile程序的编写. 一开始创建目录时出现了错误,显示权限不够,后来加了sudo,问题得到了解决. 因为代码打错出现了错误,及时改正后

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

2014025688(30) <嵌入式程序设计>第七周学习总结 有名管道 FIFO也称为有名管道,它是一种文件类型.FIFO简单理解,就是它能把两个不相关的进程联系起来,FIFO就像一个公共通道,解决了不同进程之间的"代沟".普通的无名管道只能让相关的进程进行沟通(比如父shell和子shell之间).FIFO严格遵循先进先出(first in first out),对管道及FIFO的读总是从开始处返回数据,对它们的写则把数据添加到末尾.它们不支持诸如lseek()等文件定

20145237 《Java程序设计》第七周学习总结

20145237 <Java程序设计>第七周学习总结 教材学习内容总结 第十三章   一.认识时间与日期   1.时间的度量   在正式认识Java提供了哪些时间处理API之前,得先来了解一些时间.日期的历史问题,这样你才会知道,时间日期确实是个很复杂的问题,而使用程序来处理时间日期,也不仅仅是使用API的问题.   a.格林威治标准时间:格林威治标准时间简称GMT时间,一开始是参考自格林威治皇家天文台的标准太阳时间,格林威治标准时间的正午是太阳抵达天空最高点之时,格林威治标准时间常被不严谨的

20145311 《Java程序设计》第七周学习总结

20145311 <Java程序设计>第七周学习总结 教材学习内容总结 第十二章 Lambda Lambda表达式会使程序更加地简洁,在平行设计的时候,能够进行并行处理. 第十三章 时间与日期 13.1Time&&Date 13.1.1时间的度量 1.Greenwich Mean Time(格林威治时间)简称GMT时间 观察太阳得来2.Universal Time(世界时)UT3.International Atomic Time(国际原子时)TAI4.Coordinated