首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于C语言中文件流和缓冲区的几个问题

关于C语言中文件流和缓冲区的几个问题
EN

Stack Overflow用户
提问于 2015-07-15 07:11:22
回答 1查看 641关注 0票数 0

我正在阅读“Unix环境中的高级编程”(dection5.5,P150 ),其中写道:

1.在文件关闭之前刷新任何缓冲输出数据。任何可能被缓冲的输入数据都被丢弃. 2.当一个进程正常终止时.,所有具有未写入缓冲数据的标准I/O流都会被刷新。

在1中,这是否意味着当我使用fclose()关闭流时,缓冲的输入将被丢弃,这样一些数据就不会被写入文件中。如果不是,“文件已关闭”的含义是什么?

在2,“未写缓冲的数据被刷新”的方法,缓冲的数据将被写入文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-15 07:37:49

在#1中,“缓冲输入”是指程序可以从流中读取的数据.也就是说,一旦你关闭了流,你就无法读取更多的数据。缓冲输入是从与流关联的文件/设备中读取并放置在流的输入缓冲区中的数据,但实际上尚未被代码读取(预先检索并等待您读取)。丢弃它并不会阻止任何东西被写入文件,因为它是从文件读取的输入,而不是要写入的输出。

在第二,他们说,当你的程序结束(通常),任何你的程序写到那些流实际上没有写到磁盘上的文件(或任何与该流相关的设备)将被刷新,即。实际上是写到磁盘上,而不是坐在缓冲区中。通常,您的流写入暂时保存在缓冲区中,并且只有在缓冲区被刷新时才实际写入(这可能发生在缓冲区已满时、调用fflush()时、流关闭时等等)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31423713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档