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

一.管道

1.管道的概念

管道是单向的、先进先出的,它把一个进程的输出和另一个进程的输入连接在一起。

一个进程(写进程)在管道的尾部写入数据,另一个进程(读进程)从管道的头部读出数据。

数据被一个进程读出后,将被从管道中删除,其它读进程将不能再读到这些数据。

管道提供了简单的流控制机制,进程试图读空管道时,进程将阻塞。同样,管道已经满时,进程再试图向管道写入数据,进程将阻塞

管道包括无名管道和有名管道两种,前者用于父进程和子进程间的通信,后者可用于运行于同一系统中的任意两个进程间的通信。

2.无名管道

无名管道创建:intpipe(int filedis[2]);

当一个管道建立时,它会创建两个文件描述符:

filedis[0] 用于读管道,

filedis[1] 用于写管道

管道用于不同进程间通信。通常先创建一个管道,再通过fork函数创建一个子进程,该子进程会继承父进程所创建的管道

(1)创建管道pipe

(2)读管道read

(3)写管道write

(4)关闭管道close

二.msgsnd()函数和msgrcv()函数

msgrcv/msgsnd为linux系统中异步或进程间通信的一种机制,这两个函数主要用于操作特定的消息队列。msgrcv()可以从消息队列中读取消息,msgsnd()将一个新的消息写入队列。

时间: 2024-12-07 12:10:51

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

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