我用C写了一个小程序
FILE *fp = fopen("/tmp/file", "w+");
char *buf = "hello";
fwrite(buf, 1, strlen(buf), fp);
for(;;);
在我使用 cat 读取内容的 shell 上,文件为空,因为 fflush 没有被调用。我的问题是它会永远保持这种状态,还是会在某个时候将数据推送到磁盘?
换句话说,fwrite 调用是否跨越文件系统边界到 VM 子系统,如果是,则有时应调用页面守护程序,它将内容刷新到文件中。如果不是,那么数据将永远保留在那里,直到文件关闭或刷新。