我认为fsync()在内部执行fflush(),因此在stream上使用fsync()是可以的。 但是当我在networkingI / O下执行的时候,我得到了意外的结果。 我的代码片段: FILE* fp = fopen(file,"wb"); /* multiple fputs() call like: */ fputs(buf, fp); … … fputs(buf.c_str(), fp); /* get fd of the FILE pointer */ fd = fileno(fp); #ifndef WIN32 ret = fsync(fd); #else ret = _commit(fd); fclose(fp); 但似乎_commit()不刷新数据(我试图在Windows上,数据写在Linux导出的文件系统)。 当我更改代码为: FILE* fp = fopen(file,"wb"); /* multiple fputs() call like: */ fputs(buf, […]
我在File Objects的Python 文档中find了这个: flush()不一定将文件的数据写入磁盘。 使用flush()后跟os.fsync()来确保这种行为。 所以我的问题是:Python的flush干什么的? 我以为它迫使写入数据到磁盘,但现在我看到它没有。 为什么?