情景:
r+
模式打开文件。r+
模式打开同一文件。fflush()
。在头部有一些意外的字节(0000 0000 ...),左边的字节是正确的。
PS:数据大小约为16k,我通过一次fwrite()
/ fread()
来写/读它。
我也做过测试,也就是说,如果在读取数据之前进程(B)调用fflush()
,结果是正确的。
我的问题是,
fflush()
,为什么流程(B)也需要
在读取数据之前fflush()?答案 0 :(得分:0)
必须刷新每个流以确保流已准备好进行I / O.当您在流程(A)中打开流时,您将使用类似于:
的内容FILE *fpA = fopen (filename, "r+");
然后在过程(B)中你做了类似的事情:
FILE *fpB = fopen (filename, "r+");
fpA
和fpB
都是filename
的单独数据流。仅刷新进程(A)的流对进程(B)的流没有影响,反之亦然。因此,正确的方法是确保每个流都已刷新并准备好进行额外的I / O.