1

我对 fread 的行为有疑问。fread 来自 stdio.h

我做了一个实验,如果我 fread(2KB),那么 strace 日志显示有一个 read()=4KB。因此,这意味着 fread 使用了“预取”,或者至少四舍五入到 4KB。但是,如果 fread 使用预取并在库级别缓存数据,那么在程序使用“预取”数据之前,可能会被其他程序修改,而 fread 可能不知道这种修改,这将导致不一致的问题.

那么, fread 到底是做什么的呢?fread 是否有汇总、预取和库级别的 fread 缓存?如果它使用了预取,它如何处理不一致问题?

谢谢。

4

0 回答 0