gpt4 book ai didi

c - 关于C中文件流和缓冲区的问题

转载 作者:行者123 更新时间:2023-11-30 17:12:36 25 4
gpt4 key购买 nike

我正在阅读“Unix 环境中的高级编程”,第 5.5 节,P150,它说:

1.Any buffered output data is flushed before the file is closed. Any input data that may be buffered is discared....
2.When a process terminates normally, ... ,all standard I/O streams with unwritten buffered data are flushed ...

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

2中,“未写入的缓冲数据被刷新”是否意味着缓冲数据将被写入文件?

最佳答案

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

在#2中,他们说当你的程序结束时(通常),你的程序写入这些流的任何内容实际上尚未写入磁盘上的文件(或与流关联的任何设备)将被冲洗,即。实际上写入磁盘而不是坐在缓冲区中。通常,您的流写入会暂时保留在缓冲区中,并且仅在刷新缓冲区时才实际写入(这可能在缓冲区已满、调用 fflush() 时、流关闭时等时发生) .)

关于c - 关于C中文件流和缓冲区的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31423713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com