我正在阅读“Unix环境中的高级编程”(dection5.5,P150 ),其中写道:
1.在文件关闭之前刷新任何缓冲输出数据。任何可能被缓冲的输入数据都被丢弃. 2.当一个进程正常终止时.,所有具有未写入缓冲数据的标准I/O流都会被刷新。
在1中,这是否意味着当我使用fclose()关闭流时,缓冲的输入将被丢弃,这样一些数据就不会被写入文件中。如果不是,“文件已关闭”的含义是什么?
在2,“未写缓冲的数据被刷新”的方法,缓冲的数据将被写入文件?
发布于 2015-07-15 07:37:49
在#1中,“缓冲输入”是指程序可以从流中读取的数据.也就是说,一旦你关闭了流,你就无法读取更多的数据。缓冲输入是从与流关联的文件/设备中读取并放置在流的输入缓冲区中的数据,但实际上尚未被代码读取(预先检索并等待您读取)。丢弃它并不会阻止任何东西被写入文件,因为它是从文件读取的输入,而不是要写入的输出。
在第二,他们说,当你的程序结束(通常),任何你的程序写到那些流实际上没有写到磁盘上的文件(或任何与该流相关的设备)将被刷新,即。实际上是写到磁盘上,而不是坐在缓冲区中。通常,您的流写入暂时保存在缓冲区中,并且只有在缓冲区被刷新时才实际写入(这可能发生在缓冲区已满时、调用fflush()时、流关闭时等等)。
https://stackoverflow.com/questions/31423713
复制相似问题