mam*_*sun 9 c++ linux file file-writing
有没有办法将缓冲区转储到文件原子?
"原子地"是指:如果有人在写作期间终止我的应用程序,我希望文件处于写入前或写入状态,但不是处于损坏的中间状态.
如果答案是"否",那么可能是用一个非常小的缓冲区来完成的?例如,我可以使用单个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");
Run Code Online (Sandbox Code Playgroud)