gpt4 book ai didi

c++ - 在 Linux 上原子写入文件

转载 作者:IT王子 更新时间:2023-10-29 00:31:58 25 4
gpt4 key购买 nike

有没有办法自动将缓冲区转储到文件?

“原子地”我的意思是:如果例如有人在写入期间终止我的应用程序,我希望文件处于写入前或写入后状态,但不处于损坏的中间状态。

如果答案是“否”,那么可能它可以用非常小的缓冲区来完成?例如,我能否使用单个 8 字节 fwrite(在 x64 平台上)转储 2 个后续的 int32_t 变量,并确保转储这两个 int32 变量,或者两者都不转储,但不仅仅是其中一个?

最佳答案

我建议写入一个临时文件,然后对其执行rename(2)

ofstream o("file.tmp"); //Write to a temporary file
o << "my data";
o.close();

//Perform an atomic move operation... needed so readers can't open a partially written file
rename("file.tmp", "file.real");

关于c++ - 在 Linux 上原子写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29261648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com