解决Linux中Flash掉电丢失数据问题


我在一个嵌入式Linux项目中提供了一个配置界面用来更改机器的参数,我将参数以文件形式保存在flash中。现在发现一个问题,如果更改了参数,然后用reboot热重启,则参数已经被更改,但如果断电则发现参数并没有被修改,而且文件甚至可能被清空。

经过排查,原因是Linux中并没有立即在flash进行数据交换,而是每过一段时间缓存写入flash。Linux提供了强制同步缓存与flash的命令sync,调用此命令即可实现断电保存数据。

在qt中实现的方法:

  1. QFile file1("/etc/eth0-setting");  
  2. file1.open(QIODevice::WriteOnly);  
  3. ......  
  4. ......  
  5. ......  
  6. file1.close();  
  7. system("sync");  

相关内容