我正在为OS Linux的微控制器编写日志记录程序。还有一个计算功能,其中这些结果应存储在HDD上,并在重新启动记录器时加载。
我的问题是,当我将μC覆盖某些数据时,将其从当前电源上拔下时,覆盖的数据可能会丢失。
那么我该如何覆盖一些数据,但是如果在µC被覆盖的同时拔出插头,要确保覆盖的数据或写入的数据是一致的呢?
编程语言是C ++,所以如果有boost库甚至更好的stl类型,我一定会喜欢的。
答案 0 :(得分:1)
使用stream << flush;
将C ++输出缓冲区刷新到操作系统,并使用Linux fsync()
从OS缓冲区刷新到磁盘。
后者需要Unix文件描述符,因此您需要使用依赖于实现的方法来从C ++流中获取FD。参见Retrieving file descriptor from a std::fstream
要获得更多保护,您需要在日志中使用抗故障文件系统。有关示例,请参见https://www.ibm.com/developerworks/library/l-journaling-filesystems/index.html。