关闭 fstream 是否保证文件系统同步



关闭 fstream 能保证与文件系统同步吗?我正在与一位同事讨论这个问题,需要一个明确的参考。我对标准所说的内容以及Visual Studio实现的Windows上发生的事情感到非常感兴趣。

另外,如果关闭并不意味着同步,是否有标准C++方法来确保同步完成?

我很

确定它已经解决了关闭文件流如何关闭缓冲区的问题。所以,现在,缓冲区:

标准草案'1998: 27.8.1.3.6: basic_filebuf* 关闭();

6 效果:如果 is_open() == false,则返回一个空指针。如果存在放置区域,则调用溢出 (EOF) 来刷新字符。(...)最后,它关闭文件("好像"通过调用 std::fclose(file)).308) 如果任何对溢出或 std::fclose 的调用失败,则关闭失败。

现在,请参阅overflow():27.8.1.4.8 (...)

然后我试图进一步追踪它,在下面的某个地方有一些对syncsputc的引用,但我无法追踪overflow如何保证冲洗的确切措辞。它肯定是这样,但对不起,我今天的时间到了:/

std::basic_filebuf::close调用std::fclose,它指出:"任何未写入的缓冲数据都被刷新到操作系统",或者根据C99标准草案n1256,"流的任何未写入的缓冲数据都将传递到主机环境以写入文件"。

最新更新