C ++写文件序列保证

时间:2014-11-12 16:59:04

标签: c++ linux filesystems

让我们假设我们按顺序排列以下事件:

  1. 打开3GB文件
  2. 寻求开始
  3. 写入512个零字节
  4. 寻求结束,附加64 KB的数据(::write(fd, buff, size)
  5. 寻求开始,写入512字节的标题(带有标题的crc)。关闭文件。
  6. 拔掉电源线,有可能没有同步缓冲区。
  7. 现在假设文件系统和文件存活,文件大小接近3GB,前512个字节不是零,但在步骤(4)中写入有效标头。

    是否保证64 KB“tail”实际存储在磁盘上并在文件末尾可用?

    换句话说,文件系统可以在写入(步骤4)之前实际写入(步骤5)磁盘吗?

    寻找将文件标记为“进行中”或“有效”的原子方式。

    请推荐一本关于数据库引擎物理层的书( - ;

0 个答案:

没有答案