记录文件数据写入到磁盘的数据异常,在缓冲区

现在就是用ofstream close文件后从程序中读取的文件数据正确,但是从磁盘上读取的数据异常。好像我写入文件的数据还在缓存区。就是写入文件文件迟很大

@liushad 写入后,可以执行下adb命令验证下,

VIM3:/ $ su
VIM3:/ # sync

就是我要用sync指令运行了再去检查写入文件是不是成功了吗

现在正常了,但是我想知道我们需要怎么做好一点。正常的关闭程序是OK的;但是我们这种情况属于异常断电源了,相当于直接掉电,而程序还在运行的。 这样,开机重启就是之前的数据。 但是 su sync之后OK了

@liushad 这没有更好的办法了,毕竟异常掉电嘛,想要马上保存数据,就在程序上加入sync代码。
下面代码是我之前解决类似问题的参考代码。


    Solve the problem of sudden power failure, WiFi connection has not been memorized

--- a/service/java/com/android/server/wifi/SupplicantStaNetworkHal.java
+++ b/service/java/com/android/server/wifi/SupplicantStaNetworkHal.java
@@ -48,6 +48,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import javax.annotation.concurrent.ThreadSafe;
+import java.io.IOException;
 
 
 /**
@@ -246,6 +247,17 @@ public class SupplicantStaNetworkHal {
         }
     }
 
+       private void  fileSync(){
+               Runtime runtime = Runtime.getRuntime();
+               try {
+                       runtime.exec("sync");
+                       Log.d(TAG, "hlm fileSync"); 
+               } catch (IOException e) {
+                       e.printStackTrace();
+                       Log.e(TAG, "hlm fileSync error"); 
+               }
+       }
+
     /**
      * Save an entire WifiConfiguration to wpa_supplicant via HIDL.
      *
@@ -379,7 +391,7 @@ public class SupplicantStaNetworkHal {
                     return false;
                 }
             }
-
+                       fileSync();
             // Now that the network is configured fully, start listening for callback events.
             mISupplicantStaNetworkCallback =