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

6.5 标准I/O编程

标准的I/O的三种缓冲存储:全缓冲、行缓冲、不带缓冲。
打开文件的三个标准函数:

  • fopen()可以指定打开文件的路径和模式
  • fdopen()可以指定打开的文件描述和格式
  • freopen()除了可以打开的文件、模式外,还可以指定特定I/O流。
  • fopen()函数语法要点:头文件#include<stdio.h>
    函数原型:FILE *fopen(const char *path,const char*mode)
    函数传入值:
    • Path:包含要打开的文件路径及文件名
    • mode:文件打开状态
    • 函数返回值:
      • 成功:指向FILE的指针
      • 失败:NULL
        读文件:fread()文件流被打开后,可对文件流进行读写等操作,其中读操作的函数为fread()
        格式:所需函数头文件:#include <stdio.h>
        函数原型fread是一个函数,是计算机程序中从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功返回 0。

函数原型为:size_t fread( void * buffer , size_t size , size_t count , FILE * stream );
fwrite是一个C语言函数,向文件写入一个数据块。函数写入文件(可安全用于二进制文件)。
函数原型:size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);
参数:

  • buffer:是一个指针,对fwrite来说,是要获取数据的地址;
  • size:要写入内容的单字节数;
  • count:要进行写入size字节的数据项的个数;
  • stream:目标文件指针;
  • 返回值:返回实际写入的数据项个数count。

7.1 Linux进程概述-7.2 Linux进程控制编程

进程是操作系统结构的基础;是一个正在执行的程序。
进程运行的状态:
1.就绪状态(Ready)
2.运行状态(Running)
3.阻塞状态(Blocked)
进程的启动:手工启动、调度启动。
调度进程的常用命令:ps top renice nice bg等

  • fork()函数:fork()函数用于从已存在的进程中创建新的进程,新进程成为子进程,原进程成为父进程。使用fork()函数得到的子进程是父进程的替代品。
  • exec族函数:能够根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件 。这里的可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。
  • exit.c和_exit.c:两者间最大的区别在于函数的调用,相同之处是,二者都是用来结束进程的,区别在于,_exit()执行后立即返回给内核,而exit()要先执行一些清除操作,然后将控制权交给内核。
  • wait()函数和waitpid()函数:进程一旦调用了wait(), 就立即阻塞自己,由wait自动分析是否有当前进程的某个子进程已经退出,如果让它找到了一个已经变成僵尸的子进程,wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到一个子进程结束或者该进程接到了一个指定的信号为止。
  • waitpid():和wait()一样,但它并不一定要等待第一个终止的子进程,它还有若干选项,如可提供一个非阻塞版本的wait()功能等。实际上wait()函数只是waitpid()函数的一个特例,在Linux内部实现wait()函数时直接调用的就是waitpid()函数。
    具体的实验部分在实验楼中的实验报告中有详细体现。
    实验报告:https://www.shiyanlou.com/courses/reports/1276558 https://www.shiyanlou.com/courses/reports/1276572
posted @ 2017-05-23 22:25  6班-15-李东冉  阅读(139)  评论(0编辑  收藏  举报