现在就是用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 =