首页 > 代码库 > 2014025689 《嵌入式系统程序设计》第五周学习总结

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  


参考资料

  

 

 

 

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