博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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