2014025652《嵌入式系统程序设计》第五周学习总结
学习及实验总结
标准I/O编程
标准I/O提供了三种类型的缓冲存储
![](http://images2015.cnblogs.com/blog/1150867/201705/1150867-20170520100938869-1651599251.png)
fopen函数:打开文件的函数,返回一个指向FILE的指针。
![](http://images2015.cnblogs.com/blog/1150867/201705/1150867-20170520102849213-1809751836.png)
![](http://images2015.cnblogs.com/blog/1150867/201705/1150867-20170520103534760-651478501.png)
fclose函数:将缓冲区的数据全部写入到文件中,并释放系统所提供的文件资源
![](http://images2015.cnblogs.com/blog/1150867/201705/1150867-20170520155143447-131571263.png)
fread函数:在文件被流打开之后,可对文件进行读写等操作。
![](http://images2015.cnblogs.com/blog/1150867/201705/1150867-20170520155303385-2133322157.png)
fwrite函数:用于对指定的文件流进行写操作。
![](http://images2015.cnblogs.com/blog/1150867/201705/1150867-20170520155352494-416710954.png)
![](http://images2015.cnblogs.com/blog/1150867/201705/1150867-20170520155411228-1681287316.png)
字符输入输出函数的语法
![](http://images2015.cnblogs.com/blog/1150867/201705/1150867-20170520155539916-1862190067.png)
里面的几个函数功能类似,其区别仅在于getc()和putc()通常被实现为宏,而fgetc()和fputc()不能实现为宏,因此函数的实现时间会有所差别。
行输入、输出的语法特点
![](http://images2015.cnblogs.com/blog/1150867/201705/1150867-20170520155958307-1642490555.png)
格式化输入输出的语法特点。
![](http://images2015.cnblogs.com/blog/1150867/201705/1150867-20170520160157978-1321931228.png)
![](http://images2015.cnblogs.com/blog/1150867/201705/1150867-20170520160214900-946649637.png)
Linux进程概述
进程的定义:进程是一个程序的一次执行过程,同时也是资源分配的最小单元。
进程和程序的本质区别是:程序是静态的而进程是动态的。
进程控制块包含了进程描述信息、控制信息以及资源信息,它是进程的静态描述。
进程的运行状态:
(1)执行态:该进程正在运行,即进程正在占用CPU。
(2)就绪态:进程已经具备执行的一切条件,正在等待分配CPU处理时间片。
(3)等待态:进程不能使用CPU,若等待事件发生(等待的资源分配到)则可将其唤醒。
三种状态的关系:
![](http://images2015.cnblogs.com/blog/1150867/201705/1150867-20170520161155510-754539074.png)
调用进程常用的函数及意义
![](http://images2015.cnblogs.com/blog/1150867/201705/1150867-20170520161520869-2122511822.png)
进程控制编程
1.fork()函数:用于从已存在的进程中创建一个新进程。
fork()函数的语法:
![](http://images2015.cnblogs.com/blog/1150867/201705/1150867-20170520161739682-1735143152.png)
2.exec()函数:在进程中启动另一个程序执行的方法
exec()函数函数的语法
![](http://images2015.cnblogs.com/blog/1150867/201705/1150867-20170520163600650-1162560398.png)
参数传递方式:(1)逐个列举的方式(2)将所有参数整体构造指针数组传递。
3.exit()和_exit()的用法
![](http://images2015.cnblogs.com/blog/1150867/201705/1150867-20170520170154510-592060789.png)
4.wait()和waitpid()用法
![](http://images2015.cnblogs.com/blog/1150867/201705/1150867-20170520170248853-1810326339.png)
实验楼实验
C 库函数 size_t fread从给定流 stream 读取数据到ptr 所指向的数组中。
声明函数库size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
ptr 含义是指向带有最小尺寸 size*nmemb 字节的内存块的指针。
size 含义是要读取的每个元素的大小,以字节为单位。
nmemb 含义是元素的个数,每个元素的大小为 size 字节。
stream 含义是指向 FILE 对象的指针,该 FILE 对象指定了一个输入流。
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
参数含义同上。
收获及感悟
通过实验楼,我更了解了这些函数的应用,而且通过实验楼的应用,我学会了这些函数的应用,收获好多。
学习进度条
|
代码行数(新增/累积) |
博客量(新增/累积) |
学习时间(新增/累积) |
重要成长 |
目标 |
5000行 |
9篇 |
180小时 |
熟悉了Linux,vi,gcc |
第一周 |
200/200 |
1/1 |
20/20 |
学会应用vi、gdb和makefile |
第二周 |
400/600 |
1/2 |
20/40 |
学习了如何安装交叉编译工具,Bootloader的配置与编译 |
第三周 |
600/1200 |
1/3 |
20/60 |
知道了I/O的标准,知道了一些控制进程函数的应用 |
第四周 |
800/2000 |
1/4 |
20/80 |
|
第五周 |
800/2800 |
1/5 |
20/100 |
|
第六周 |
600/3200 |
1/6 |
20/120 |
|
第七周 |
600/2800 |
1/7 |
20/140 |
|
第八周 |
600/4400 |
1/8 |
20/160 |
|
第九周 |
600/5000 |
1/9 |
20/180 |
|