我正在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。然后在原始文件上重命名副本。重命名是原子的。
所以,调用的顺序是,fopenfwritefcloserename,。

关于c - 在Linux上将fwrite用作原子过程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17304647/

10-12 23:28