一个进程中默认打开了STDIN(标准输入)、STDOUT(标准输入)、STDERR(标准错误)
标准io:标准io库(stdio)提供的带缓存的io,可提高效率(减少系统点用),也会有系统调用,只是在缓存达到某种条件是,才会执行系统点用
带缓存的实质:是将要输入或者输出的数据,先放到缓存中,然后在适当的时候,将数据输出/输入
如下图:从键盘上输入“iotek”,会先将数据存放到缓冲区中。
每当使用标准IO的写操作函数,试图将数据写入文件 a.txt 时,数据都会流过缓冲区(一般大小为1024字节),然后再在适当的时刻冲洗(或称刷新,flush)到内核,最后才真正写入设备文件。
缓冲区按照什么时候冲洗数据到内核,可以将缓冲区分成以下三类:
-
不缓冲类型:
-
一旦有数据,立刻将数据冲洗到文件(立即在存储器中更新文件)
-
全缓冲类型:
-
一旦填满缓冲区,立刻将数据冲洗到文件
-
程序正常退出时,立刻将数据冲洗到文件
-
遇到 fflush() 强制冲洗时,立刻将数据冲洗到文件
-
关闭文件时,立刻将数据冲洗到文件
-
读取文件内容时,立刻将数据冲洗到文件
-
改变缓冲区类型时,立刻将数据冲洗到文件
-
行缓冲类型:
-
同全缓冲类型
-
一旦遇到’\n’时,立刻将数据冲洗到文件
标签:文件,冲洗,标准,缓存,io,缓冲区,数据 From: https://www.cnblogs.com/zj-studyrecoding/p/17117755.html