每当我在UBIFS文件系统上运行我的应用程序并对任何文件(提供的文件具有正确的读写模式)执行写操作时,在关闭电源后立即打开,我看到写入该文件的内容丢失了 . 该文件为零 . 如果在JFFS2文件系统上执行同样的事情不会造成这个问题 . 我尝试过使用同步命令,但很少存在这个问题 .
例如:
我需要在一个名为myfile的文件中写入一些数据,在运行期间打开它并将一些数据写成“Hi..Hello ..”(如果我打开文件并在写入操作后检查,数据写得正确),那么在关机/重启后,我发现内容“Hi..Hello ..”不存在,文件大小为零字节 .
注意:只有在关闭或重新启动系统后才会出现问题 .
1 回答
UBIFS的同步频率较低 . 因此,如果文件是重要的调用,在用户应用程序中,您必须调用fsync() . 我建议您执行以下操作之一以防止UBIFS中的数据丢失:
关键写入后调用fsync()
使用O_SYNC标志打开文件
使用-o sync挂载ubifs(绕过写入缓冲区)
Why is my file empty after an unclean reboot?
Few notes with regards to synchronization