读写文件时的掉电保护问题

    在程序中读写文件要考虑突然掉电情况下的保护.当我们打开一个文件进行读操作时,系统会先把文件内容取出放到RAM里,突然掉电是不会损坏文件的;当我们写文件时,系统会在RAM里开辟一块区域,写的内容先放进这块区域中,系统适时成批写入文件.(linux里的sync命令可强制把写的内容放入文件).如果突然断电,未写入文件的内容就丢失了.对于重要的配置文件而言,如果文件内容不完整,会使系统无法正常工作.

    操作系统(文件系统)对文件有保护机制,比如文件打开了,掉电了,操作系统应该是自动关闭文件.从整个文件系统来说,突然掉电会造成文件系统资料的不一致,下次启动时会重整文件系统.但光有操作系统的保护机制是不够的.

    配置文件在系统运行时时常要修改某些配置,那么怎样才能防止突然掉电损坏文件呢?下面以一个文本文件型的配置文件的修改为例探讨一下这个问题.

    文本型的配置文件的修改可以这样进行:

                    step1:打开配置文件,然后新创建一个文件.

                    step2:用fgets一行行读出配置文件内容,检查内容,如果是要修改的修改之,然后用fputs写入新文件.

                    step3:关闭配置文件和新文件

                    step4:删除配置文件.

                    step5:把新文件改名为配置文件.

   按这个做法,如果执行完step4后突然掉电,下次启动后就没有配置文件了,为了解决这个问题可以在step1中打开配置文件时若发现配置文件不存在,可以重建一个缺省配置的配置文件.

   这个方法可保证配置文件不至丢失或内容不完整,缺点是重建的配置文件是缺省配置.也可以发现配置文件丢失后,把那个'新文件'改名为配置文件.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值