我正在使用 native 库,它使用 fopen() 创建并写入二进制文件(网络日志文件)。我在 android 和 windows 上都使用这个库。在 Android 上,文件不会在调用 fopen() 时被删除和创建,而在 Windows 上是这样。这很麻烦,因为我希望每次启动程序时都重置它;就像现在一样,当我在 android 上运行它时,记录器只是积累数据。
我 fopen() 这样的文件;
#ifdef ANDROID
pcapFP = fopen("/mnt/sdcard/log.pcap","wb+");
#else
pcapFP = fopen("log.pcap","wb+");
#endif
知道为什么 Android 文件没有重置吗?
谢谢
编辑:似乎如果进程被终止,那么文件会在重新启动应用程序时重置。然而,这还不够好,我想在需要时使用 *fopen()/fclose() 重置它。*
最佳答案
Standard在fopen
函数的描述中具体说:
7.19.5.3/3
...
w+b or wb+ truncate to zero length or create binary file for update
所以,显然,您的 Android 实现(编译器和库)不符合标准 :(
也许尝试不同的编译标志???
关于android - fopen() 不重置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7472160/