• 标准I/O介绍


    标准I/O库

    1. 标准I/O介绍

    不仅是在UNIX系统中,很多操作系统上都实现了标准I/O库。

    标准I/O库由ANSI C 标准说明

    标准 I/O 库处理很多细节,例如带有缓冲分配、以优化长度执行的I/O等,这样使用户不用关心如何选择合适的块长度。

    标准I/O在系统调用(文件I/O)的基础上构造,便于用户使用,但相对与系统调用多了缓冲机制。

    标准I/O库及其头文件 stdio.h 为底层I/O系统调用提供了一个通用的接口。

    2. 文件指针 FILE *

    FILE指针:每个被使用的文件都在内存中开辟一个区域,用来存放文件的有关信息,这些信息是保存在一个结构体类型的变量中,该结构体的类型是由系统定义的,取名为FILE;

    标准I/O库的所有操作都是围绕 流(stream)进行的,在标准I/O中,流用FILE *来描述。

    流的定义:所有的I/O操作仅是简单的从程序移进或转移出,这种字节流,就称为流。分为文本流和二进制流,在Linux中都是二进制流。

    3. 文件缓冲

    文件系统给有两类:带缓冲文件系统(高级磁盘IO)和 非缓冲文件系统(低级磁盘IO)。

      缓冲文件系统是为了减少 系统调用(system call)read write的调用频率,降低操作系统负担。

      缓冲文件系统,系统自动在内存中为每一个正在使用的文件开辟一个缓冲区,从内存向磁盘输出数据或从磁盘读取数据是,都是先放到缓冲区。

      缓冲文件系统又分为,全缓冲,行缓冲,不缓冲三种

    使用setbuf()和setvbuf() 可以更改缓冲的类型,而且在任何时刻都可以使用fflush强制刷新一个数据流。

    4. 标准I/O库函数

    标准I/O库提供的函数有很多,比较常用的有:

    fopen();/ fclose();/ fread();/ fwrite();/ printf();/ fprintf();/ fseek();等。

  • 相关阅读:
    python抓取网页图片
    Socket通信之Java学习(一)
    python打包成window可执行程序
    linux下安装java
    SpringBoot系列:五、SpringBoot使用Actuator
    SpringBoot系列:四、SpringBoot集成JPA
    SpringBoot系列:三、SpringBoot中使用Filter
    SpringBoot系列:二、SpringBoot的配置文件
    SpringBoot系列:一、SpringBoot搭建
    .Net Core使用IConfiguration来处理Json文件
  • 原文地址:https://www.cnblogs.com/chen-farsight/p/6024331.html
Copyright © 2020-2023  润新知