我正在linux环境下开发一个c代码。我使用fwrite
将一些数据写入一些文件。程序将在经常断电的环境下运行(至少每天一次)。因此,我希望fwrite
确保在文件写入数据时发生断电时不应更新该文件。它应该只在fwrite
完成其工作时保存文件。如何使用fwrite
仅影响文件完成写入过程?
编辑:我使用fopen和wb
来丢弃文件中以前的信息并编写一个新文件,例如。
FILE *rtng_p;
rtng_p = fopen("/etc/routing_table", "wb");
fwrite(&user_list, sizeof(struct routing), 40, rtng_p);
它是一个非常小的数据,有些字节长
最佳答案
首先将文件写入同一文件系统上的临时路径,如/etc/routing_table.tmp
。然后在原始文件上重命名副本。重命名是原子的。
所以,调用的顺序是,fopen
,fwrite
,fclose
,rename
,。
关于c - 在Linux上将fwrite用作原子过程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17304647/