日期:2014-05-16  浏览次数:21311 次

linux下利用fwrite文件写入过程中突然断电的处理
在linux下利用fwrite对文件进行写入的过程中,突然断电。针对
这个时候,通常应该采取哪些措施,或者说如何针对这种情况,采取
相应的应对措施呢。linux有无相应的应对方法。
如果可以的话,由相关的文档,参考资料更好!
谢谢各位!

------解决方案--------------------
楼上说的很对

进入fwrite前记得fsync下
出来了记得fsync下,对你的问题有所改善,但系统的信能会下降点点
int fsync(int fd);
------解决方案--------------------
看看office是怎么应对断电的

在编辑后备份一个临时文件,用来在断电以后恢复。

提供"自动保存"功能,每隔一段时间自动保存修改。
------解决方案--------------------
sync
fsync
fflush.
一般就是这样的.
还有就是把缓冲区设置成无缓冲.
这样就能最多限度的保证不会因为缓冲的缘故而照此数据丢失.不过这要在效率上要付出代价的.
------解决方案--------------------
楼主的问题问的是fwrite的写入文件过程中, 这和临时文件完全就是两码事.
写临时文件也需要fwrite, 这个过程中断电还是一样没法保护.

而且rename过程中断电也是无法保护的, fsync过程中断电还是没法保护.

断电本身就是一个无法预知的事情, office的临时文件策略有它的优点, 也就缺点, 就是每次进行一个操作都要进行写入, 这个和fsync这个机制是一个道理, 是一种同步策略. fwrite本身, 无法保护的.

机制和策略的问题.... UNIX最古典的问题之一...