zoukankan      html  css  js  c++  java
  • 标准I/O缓冲:全缓冲、行缓冲、无缓冲

    说明:我只网络资源整合,简单易学~。~

    操作流程最后呼吁read或write功能I/O操作。为了使程序的效率最高。Stream对象通常提供缓冲。为了减少呼叫系统I/O库函数的数量。

    基于流I/O提供以下3种缓冲:

    全缓冲:直到缓冲区被填满。才调用系统I/O函数。对于读操作来说,直到读入的内容的字节数等于缓冲区大小或者文件已经到达结尾。才进行实际的I/O操作,将外存文件内容读入缓冲区;对于写操作来说,直到缓冲区被填满,才进行实际的I/O操作,缓冲区内容写到外存文件里。磁盘文件一般是全缓冲的。

    行缓冲:直到遇到换行符'/n',才调用系统I/O库函数。对于读操作来说。遇到换行符'/n'才进行I/O操作,将所读内容读入缓冲区;对于写操作来说。遇到换行符'/n'才进行I/O操作,将缓冲区内容写到外存中。

    因为缓冲区的大小是有限的,所以当缓冲区被填满时,即使没有遇到换行符'/n',也相同会进行实际的I/O操作。标准输入stdin和标准输出stdout默认都是行缓冲的。

    无缓冲:没有缓冲区,数据会马上读入或者输出到外存文件和设备上。标准出错stderr是无缓冲的。这样保证错误提示和输出可以及时反馈给用户,供用户排除错误。

    以上3种缓冲区分别定义为3个宏,其定义例如以下表所看到的。

    缓冲区类型

       

    全缓冲

    _IOFBF

    行缓冲

    _IOLBF

    无缓冲

    _IONBF

    在使用上表所述的缓冲类型宏时,应将文件流对象中的缓冲区标志与该宏做"与"操作,推断结果是否为0就可以知道该缓冲文件流的缓冲区是否属于该类型了。

    详细样例參考 http://hi.baidu.com/hp_roc/blog/item/47eedcef85e2b7dfb31cb19e.html

    几个退出函数:

    1、exit ()。

    调用exit函数之后。它首先会运行一系列的清理处理,包含调用运行各终止处理程序。关闭全部标准IO流等,然后进入内核。

    2、_exit ()。与exit不同的是,它不进行清理工作而直接进入内核。

    此函数由POSIX.1说明,放在unistd.h里面。

    3、_Exit ()。相同,它也不进行清理工作而直接进入内核。此函数跟exit一样由ISO C说明,放在stdlib.h里面。

    对于退出函数对于缓冲区冲洗的效果以这个链接谈到更具体:

    http://blog.csdn.net/seton040/archive/2009/08/31/4504825.aspx

  • 相关阅读:
    OpenGL相关文章
    gluOrtho2D与glViewport
    QOpenGLWidget
    openGL中的gl,glu,glut
    QT对话框
    QT布局
    QT容器类
    [POJ1014]Dividing(二进制优化多重背包)
    [Codefroces401D]Roman and Numbers(状压+数位DP)
    [HDU6326]Monster Hunter(贪心)
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4591790.html
Copyright © 2011-2022 走看看