在C中使用fread读取文件
我缺乏操作系统和C语言方面的正式知识。我的问题如下在C中使用fread读取文件,c,operating-system,C,Operating System,我缺乏操作系统和C语言方面的正式知识。我的问题如下 当我试图在C语言中使用fread读取文件的第一个单字节时,包含该字节的整个磁盘块是被带到内存中还是仅仅是该字节 如果将整个块放入内存,读取时会发生什么 第二个字节,因为包含该字节的块已在 记忆 以磁盘块大小读取文件是否有意义 读取文件块保存在内存中的什么位置 这是我的答案 超过1个块,默认缓存为64ksetvbuffer可以改变这一点 在第二次读取时,没有I/O。数据从磁盘缓存中读取 不,文件通常比磁盘空间小。即使在实际磁盘空间大小范围内,读取
fread
读取文件的第一个单字节时,包含该字节的整个磁盘块是被带到内存中还是仅仅是该字节setvbuffer
可以改变这一点文件
结构的一部分。这是特定于实现(编译器)的,所以不要碰它上面的缓存由C运行时库使用,而不是由操作系统使用。操作系统可能有磁盘缓存,也可能没有磁盘缓存,这是一种独立的机制。操作系统的缓存是一种不同的内存,而不是用户空间
文件
结构中使用的缓冲区。文件
缓冲区是单独设置的,编译器环境只设置了默认值。正确,我在答案中添加了一个简短的解释。还修复了打字错误:(