zoukankan      html  css  js  c++  java
  • linux 系统中将数据写入文档不能立即保存问题的解决方法

    应用场景:

            设备跑的是Linux系统,与PC上位机进行通信,上位机可以给Linux发送设备配置信息,Linux将配置信息写入文件中以备设备断电重启时使用。

    bug现象:

            设备正常运行,设备配置信息为A,此时通过上位机给给Linux发送行的设备信息B,并进入Linux系统查看,设备配置信息已被正确写入文件中, 然后给设备断电重启,待设备运行稳定发现设备配置信息仍为A。

    bug分析:

           1. 可以确定的是上位机向Linux系统发送设备配置信息的信道连接是没有问题的;

            2. Linux进行设备信息保存的过程是正常的。

    解决过程:

           1. 在Linux将设备配置信息写入文件后,再重新读出,该方法不能解决问题,上位机发送完配置信息后立即给设备断电重启,依然会出现上述现象;

           2.  在Linux将设备信息写入文件后,调用fflush(),手动冲刷缓存,该解决方法和 1 一样,不能完全解决问题;

           3. 在Linux将设备信息写入文件后,system("sync"); 强制同步缓存和硬盘,问题得到解决。

    综上,应该是fwrite()只是将数据写在了缓存中,而没有同步到硬盘(SD卡)中去,Linux系统应该也有缓存同步机制,但我还不太清楚具体是怎样的,应为在上面的解决过程中,如果在上位机发送完配置信息后,等待 2 分钟, 数据还是可以保存的,但是设备在实际使用中是不一定能等这么久的时间的所以最终使用的方法3的解决方案。关于Linux系统缓存的同步机制后期再研究了。
  • 相关阅读:
    Elasticsearch之优化
    前端页面加载速度优化---Ngnix之GZIP压缩
    Nginx的try_files使用详解
    elk6.3.2在线安装中文分词工具IK
    filebeat5与filebeat6配置index的差异
    十分钟部署Anemometer作为Mysql慢查询可视化系统
    虚拟机磁盘逻辑卷扩容
    十分钟搭建和使用ELK日志分析系统
    关于NODEJS性能测试和优缺点总结
    十分钟搭建和使用sonarqube代码质量管理平台
  • 原文地址:https://www.cnblogs.com/Waming-zhen/p/10116301.html
Copyright © 2011-2022 走看看