- 主题:请教一个ofstream的flush问题
我发现ofstream写文本时,即使加上flush,也不会立刻把数据写到文本文件里
文件close都执行完一段时间了,数据才会写完。
如果我想close返回时就写完,应该怎么做呢?
多谢多谢!
--
FROM 218.249.50.*
Linux: fsync(),Windows:FlushFileBuffers()。但是实际上有些SSD不支持fsync,报告虚假的写回成功。
--
FROM 222.129.49.*
也就是SSD 的主控只是写入ram缓冲,然后就报写入完成?
可是,依SSD的速度,至少几十MB的文件,人应该感觉不到这个延迟的吧?
【 在 ble 的大作中提到: 】
: 但是实际上有些SSD不支持fsync,报告虚假的写回成功。
--
FROM 47.144.148.*
一个规避方式。关闭后立即再打开一次。
file.close
flile.open
【 在 fishingriver 的大作中提到: 】
: 我发现ofstream写文本时,即使加上flush,也不会立刻把数据写到文本文件里
: 文件close都执行完一段时间了,数据才会写完。
: 如果我想close返回时就写完,应该怎么做呢?
: ...................
--来自微水木3.5.11
--
FROM 140.206.195.*
人确实感觉不到是没啥大问题,主要是突然断电等出现数据不一致的问题。
【 在 hongyan2022 的大作中提到: 】
: 也就是SSD 的主控只是写入ram缓冲,然后就报写入完成?
: 可是,依SSD的速度,至少几十MB的文件,人应该感觉不到这个延迟的吧?
:
--
FROM 222.129.49.*
掉数据这问题挺讨厌的。
【 在 ble 的大作中提到: 】
: 人确实感觉不到是没啥大问题,主要是突然断电等出现数据不一致的问题。
:
--
FROM 47.144.148.*
你需要换文件系统,低成本的话,考虑一下zfs
【 在 hongyan2022 的大作中提到: 】
: 掉数据这问题挺讨厌的。
:
--
FROM 122.234.10.*
在用ext4. 搜了一下zfs,好象评价不错。 性能好吗,维护比较麻烦吗?
个人的盘丢数据,我不在乎。 生产系统里,我们有大量的写和读。如果能提升硬盘性能,还有很有影响的。
【 在 ziqin 的大作中提到: 】
: 你需要换文件系统,低成本的话,考虑一下zfs
:
--
FROM 47.144.148.*
你怎么确定要过一段时间再写进去的?另一个进程在读?大概要多久?写到什么介质上?机械硬盘还是SSD硬盘?
--
FROM 101.88.154.*
你需要了解fstream、操作系统甚至硬盘是如何写存储的
flush是从fstream的buf刷到操作系统的page里
page是有cache的,操作系统会根据策略写到硬盘里,sync可以强制写硬盘
实质上硬盘内部也是有cache的,sync后断电依然有可能丢失数据
【 在 fishingriver (fishingriver) 的大作中提到: 】
: 我发现ofstream写文本时,即使加上flush,也不会立刻把数据写到文本文件里
: 文件close都执行完一段时间了,数据才会写完。
: 如果我想close返回时就写完,应该怎么做呢?
: ...................
--
FROM 115.171.245.*