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

    《嵌入式系统程序设计》第五周学习总结

一、6.5(标准I/O编程)主要涉及的函数及知识点

  标准的I/O的三种缓冲存储:全缓冲、行缓冲、不带缓冲。

  1. 全缓存:当填满标准I/O缓存后才进行实际的I/O操作
  2. 行缓存:当输入或输出中遇到行结束符时,标准I/O库执行I/O操作
  3. 不带缓存:标准I/O库不对字符进行缓冲
  

  打开文件的三个标准函数:

     fopen()、fdopen()和 freopen()。
  -fopen()可以指定打开文件的路径和模式
  函数原型:FILE * fopen(const char * path, const char * mode)
  -fdopen()可以指定打开的文件描述符和模式
  函数原型:FILE * fdopen(int fd, const char * mode)
  -freopen()除可指定打开的文件、模式外,还可指定特定的I/O流。
  函数原型:FILE * freopen(const char path, const char mode, FILE * stream)

  参数:

       * buffer:用于接收数据的地址(指针);

     *size:要写入内容的单字节数;

   *count:要进行写入size字节的数据项的个数;

   *stream:目标文件指针;

  关闭文件:

        关闭标准流文件的函数为 fclose(),该函数将缓冲区内的数据全部写入到文件中,并释放系统所提供的文件资源。

        函数原型:int fclose(FILE * stream)

  

  读文件:

    

    fread()在文件流被打开之后,可对文件流进行读写等操作,其中读操作的函数为 fread()。

    函数原型:size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream)

    ptr:存放读入记录的缓冲区;
    size:读取的记录大小;
    nmemb:读取的记录数;
    stream:要读取的文件流;

    

    字符输入输出:

  -字符输入输出函数一次仅读写一个字符。
  -函数原型(输出):int getc(FILE * stream) int fgetc(FILE * stream) int getchar(void)
  -函数原型(输入):int putc(int c, FILE * stream) int fputc(int c, FILE * stream) int putchar(int c)

  

  格式化输入输出

  格式化输入输出函数可以指定输入输出的具体格式,这里有读者已经非常熟悉的 printf()、scanf()等函数。
  int printf(const char format,…)
  函数原型(输出):
  int fprintf(FILE 
fp, const char format,…)
  int sprintf(char 
buf, const char format,…)
  int vprintf(const char 
format, va_list arg)
  int vfprintf(FILE fp, const char format, va_list arg)
  int vsprintf(char buf, const char format, va_list arg)
  函数原型(输入):
  int scanf(const char format,…)
  int fscanf(FILE 
fp, const char format,…)
  int sscanf(char 
buf, const char *format,…)

  

  7.1(Linux进程概述)-7.2(linux进程控制编程)所涉及的函数及知识点

  进程、程序:

    进程是一个程序的一次执行的过程,也是资源分配的小单元

    程序是静态的,它是一些保存在磁盘上的指令的有序集合,不进行活动。进程是动态的,它是程序执行的过程,是指程序动态创建、调度和消亡的整个过程

    就像一个软件,其本身是一个程序,一旦启动了该软件,软件内部程序包含的命令就开始执行,这个执行的全过程就是程序了

  进程控制块(PCB):

    操作系统根据PCB来对并发执行的进程进行控制和管理

    PCB包含了进程的描述信息、控制信息以及资源信息,它是进程的一个静态描述

  进程的标识

    进程标识有进程号和父进程号。其中 PID惟一地标识一个进程。PID和 PPID都是非零的正整数。

  

  进程运行的状态

        进程是程序的执行过程,根据它的生命周期可以划分成 3种状态。

         执行态:该进程正在运行,即进程正在占用 CPU。

         就绪态:进程已经具备执行的一切条件,正在等待分配 CPU的处理时间片。
         等待态:进程不能使用 CPU,若等待事件发生(等待的资源分配到)则可将其唤醒。

  

  Linux下的进程管理

  Linux下的进程管理包括启动进程和调度进程。

  -启动进程
    Linux下启动一个进程有两种主要途径:手工启动和调度启动。

  -调度进程
    调度进程包括对进程的中断操作、改变优先级、查看进程状态等。

  

  linux下进程相关的基本系统调用

    - fork()函数:用于从已存在的进程中创建一个新进程。

      

- execlp("ps","ps","-ef",NULL)这个函数相当于调用“ps -ef”用于查看当前所有的进程

- execl("/bin/ps","ps","-ef",NULL)这个函数要注意写ps的完整路径。结果同上面的函数。 

- execle("/usr/bin/env","env",NULL,envp)这个函数也要指出env的完整路径,envp是指针

-execve("/usr/bin/env",arg,envp)通过构造指针数组的方式来传递参数,注意参数列表一点要以NULL作为结尾标识符。

学习总结:

  学习了fread和fwite的功能,并学习了fread和fwite的一些基本命令,学习了解了fork()函数。

  进一步学会了Linux系统中进程和线程的基础知识,增加了印象和了解。

学习进度条:

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 9篇 180小时  
第一周 400/400 1/1 20/20 学会了Linux、Vim、gcc操作
第二周 800/800 2/2 40/40 学会了gdb、库、make编程
第三周 1400/1400 3/3 60/60  
第四周 2000/2000 3/4 80/80  
第五周 2600/2600 4/5 100/100 学会了Linux系统中进程和线程的基础知识
第六周 /3200 /6 /120  
第七周 /3800 /7 /140  
第八周 /4400 /8 /160  
第九周 /5000 /9 /180  


参考资料

  

时间: 06-19

2014025689 《嵌入式系统程序设计》第五周学习总结的相关文章

2014025670(12)《嵌入式系统程序设计》第二周学习总结

这周学习了gcc和gdb的使用还有makefile. 教材学习内容总结 教材内容开始看的有些吃力,很多地方都不太懂,网上查询和询问同学和老师之后,了解了很多,但是具体操作和实现方面还是比较难. 教材学习中问题和解决过程 对于gcc的操作在实验楼的学习中还是比较顺利,gdb的操作感觉有些村存在问题-----gdb的调试方面有些吃力,应该是自己没努力的结果,打算把问题汇总一下,再试试实验. 课后作业中的问题和解决过程 应用实验楼的第二周,第一周的内容感觉简单,消化很快,没想到第二周就感觉有些吃力,不

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

本周学习过程中,学习运用gcc和gdb的编程,在实验过程中,编辑c文件,对文件类型进行转换,由于实验过程中,代码出现了错误,浪费了大量的时间查找代码的错误. 在Makefile的实验过程中,运用vi分别编辑hello.c文件hello.h,以及Makefile文件,最后运应用make -f makefile1显示 make hello是最新的.

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

本周所学内容如下: 1.学会使用gcc编译器: 2.学会使用GDB调试器: 3.学会C程序的编写(包括系统调用和函数调用) 4.学会Makefile基本规则: 5.学会make命令的使用方法: 6.学会使用Makefile程序的编写. 7.使用gcc编译器编译C语言程序文件生成可执行文件的过程,是要经历四个相互关联的步骤:预处理.编译.汇编和链接. 8.gdb是GNU开源组织开发的一个强大的Linux下的程序调试工具,它主要完成:启动被调试程序,按照要求运行程序.让被调试的程序在指定的位置停住.

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

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

20145234黄斐《信息安全系统升级系统》第五周学习总结

教材内容概述 3.1 历史观点 X86 寻址方式经历三代: 1 DOS时代的平坦模式,不区分用户空间和内核空间,很不安全2 8086的分段模式3 IA32的带保护模式的平坦模式 3.2 程序编码 计算机系统使用了多种不同的抽象,对机器级编程来说,两种抽象尤为重要: 机器级程序的格式和行为,定义为"指令集体系结构"--"ISA" 机器级程序使用的存储器地址是虚拟地址 可见的处理器状态 程序计数器 指示将要执行的下一条指令在存储器中的位置 整数寄存器文件包含8个命名的位

2014025665《嵌入式系统程序设计》第三、四周学习总结

第三周1.我们在带三周的嵌入式程序设计中学到了如何搭建嵌入式Linux交叉开发环境.其实主要是解决64位系统下如何安装32位程序的问题.①若联网:Syum install Id-Linux.so.2②若不联网:Srpm-ivhg libc.rpm nss.rpm还有测试arm-Linux-gcc是否编译等问题.第二节课学的是如何配置PATH将工具链加入到PATH中:方法一:$export PATH=$PATH;/usr/local/arm/gcc-3.4.6-glibc-2.3.6/bin方法二

20145326蔡馨熠《Java程序设计》第一周学习总结

20145326蔡馨熠 <Java程序设计>第一周学习总结 教材学习内容总结 转眼间新的一学期终于开始了!为什么我这么期待呢?因为这学期可以上娄嘉鹏老师的java程序设计课,我不是什么电脑天才,之前c语言学得也不是特别好.可我就是对hdl和java特别感兴趣(之前在我的问卷调查报告里面提到过),并且寒假的时候在家里也预习了一部分java知识.第一周要求学习两个章节并作心得体会,虽然我早已看过前两章的知识,不过为了进一步巩固,我还是用了星期六一天的时间把第一章和第二章的知识从头到尾仔仔细细的看了

20145224-陈颢文 《Java程序设计》第一周学习总结

20145224 <Java程序设计>第一周学习总结 教材学习内容总结 通过第一周的学习让我对Java有了个初步的了解,知道了Java分为Java SE.Java EE.Java ME三大平台,其中Java SE是基础.Java的一大特点是它可以跨平台,而JVM对Java的跨平台提供了支持,它就类似于一个虚拟机,只要在当前平台安装了相应的JVM,Java程序就有了可以在此平台上运行的基础啦.JRE是Java的执行环境,在安装了JRE的计算机上就可以运行Java的程序了,当然光是可以跑代码对于程

20155335 俞昆 2016-2017-2 《Java程序设计》第九周学习总结

学号 2016-2017-2 <Java程序设计>第九周学习总结 ##JDBC入门 在正式介绍JDBC前,已知JDBC是用来执行SQL的解决方案,开发人员使用JDBC的标准接口,开发人员不需接触底层数据库驱动程序的差异性. 本章,我们需要了解JDBC与API使用和概念,我们先要认识应用程序如何与数据库进行沟通,数据库本身是一种独立运行的应用程旭,程序员撰写的应用程序是利用通信协议对数据库进行指令交换,以进行数据的增加删除以及查找. 通常应用程序会利用一组专门与数据库进行通信协议的链接库,以简化