Linux的缓冲区

615 阅读1分钟

缓冲区

《面试题》:缓冲区是什么?标准IO在文件IO的基础上封装的一片存放数据的地址(一般用来存放不着急的数据),等到缓冲区这个地址中的数据存满,或者说程序员手动刷新这片空间,空间中的数据会被调用文件IO操作。

缓冲区一共分为三大类

  1. 全缓冲

    1. 一般为对文件的操作,全缓冲区大小为4096个字节
    2. 刷新缓冲区的条件
      1. 缓冲区满刷新缓冲区

      2. 程序结束刷新缓冲区

      3. 程序手动刷新缓冲区(fflush)

  2. 行缓冲

    1. 只有两个是行缓冲,标准输入,标准输出。行缓冲大小为1024个字节
    2. 刷新行缓冲的条件:
      1. 缓冲区满则刷新缓冲区

      2. 缓冲区遇到\n则刷新缓冲区

      3. 标准输入标准输出一方要使用缓冲区时,正在使用的一方需要让出缓冲区,给需要用的一方使用

      4. fflush刷新缓冲区

      5. 程序结束

  3. 无缓冲

    1. 一般为标准错误输出,一般用于比较着急的数据,所以不会进入缓冲区。直接调用文件IO。
    2. 一般使用方式:fprintf(stderr,"hello world");