我在一个嵌入式Linux项目中提供了一个配置界面用来更改机器的参数,我将参数以文件形式保存在flash中。现在发现一个问题,如果更改了参数,然后用reboot热重启,则参数已经被更改,但如果断电则发现参数并没有被修改,而且文件甚至可能被清空。
经过排查,原因是Linux中并没有立即在flash进行数据交换,而是每过一段时间缓存写入flash。Linux提供了强制同步缓存与flash的命令sync,调用此命令即可实现断电保存数据。
在qt中实现的方法:
QFile file1("/etc/eth0-setting"); file1.open(QIODevice::WriteOnly); ...... ...... ...... file1.close(); system("sync");