fflush(对于FILE*),std :: flush(对于IOStream)强制程序发送到OS.
POSIX有
sync(2)要求安排写入缓冲区,但可以在写入完成之前返回(Linux正在等待数据在返回之前发送到硬件).
fsync(2)保证等待数据发送到硬件,但需要一个文件描述符(你可以从带有fileno(3)的FILE*中获取一个,我知道没有标准的方法来获取一个的iostream).
O_SYNC作为打开的标志(2).
在所有情况下,硬件可能都有自己的缓冲区(但是如果它有控制权,那么一个好的实现方法也会尝试刷新它们,并且ISTR认为某些磁盘正在使用电容器,这样它们就能够清除电源发生的任何事情)和网络文件系统有自己的警告.