zoukankan      html  css  js  c++  java
  • 标准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();等。

  • 相关阅读:
    第十八章 Nginx Rewrite重写
    第二十章 HTTPS实现LNMP全站访问
    第十九章 HTTPS协议介绍
    第二十一章 Nginx常用HTTPS配置
    第二十三章 Nginx常见问题思考
    ABC232
    1606E Arena
    st+dfs序求lca
    Servlet——HTTP状态 405 方法不允许
    借助SimpleDateFormat来谈谈java里的多线程不安全
  • 原文地址:https://www.cnblogs.com/chen-farsight/p/6024331.html
Copyright © 2011-2022 走看看