gpt4 book ai didi

c - 在C中使用fread读取文件

转载 作者:太空狗 更新时间:2023-10-29 15:02:20 24 4
gpt4 key购买 nike

我缺乏操作系统和 C 方面的正式知识。我的问题如下。

  1. 当我尝试在 C 中使用 fread 读取文件的第一个字节时,是将包含该字节的整个磁盘 block 带入内存还是只带入该字节?
  2. 如果将整个 block 放入内存,读取时会发生什么第二个字节,因为包含该字节的 block 已经在内存?
  3. 读取文件的磁盘 block 大小是否有意义?
  4. 读取的文件 block 保存在内存中的什么地方?

最佳答案

这是我的答案

  1. 超过 1 个 block ,默认缓存为 64k。 setvbuffer 可以改变这一点。
  2. 第二次读取时,没有 I/O。从磁盘缓存中读取数据。
  3. 不,文件通常比它的磁盘空间小。即使您在实际磁盘空间大小之内,您也会在读取超过文件大小时收到错误消息。
  4. 它是FILE 结构的一部分。这是特定于实现(编译器)的,所以不要碰它。

上述缓存由 C 运行时库而不是操作系统使用。操作系统可能有也可能没有磁盘缓存,并且是一种单独的机制。

关于c - 在C中使用fread读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20443312/

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