android - fopen() 不重置文件

标签 android c android-ndk fopen wireshark

我正在使用 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() 重置它。*

最佳答案

Standardfopen函数的描述中具体说:

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/

相关文章:

android - 如何为 ListView 中的项目设置 OnTouchListener

c - 链接器不想识别 lib 文件

c++ - 什么是C++中的不确定行为?与未定义的行为有何不同?

android - 强制应用程序为 64 位设备运行 32 位架构?

android - OpenSL,同时播放不同的声音 fragment 与 android ndk?

android - 在 Android NDK 上优化应用程序

安卓.security.KeyStoreException : Invalid key blob

android - 应用发明家 : Asynchonous tasks?

android - 尽管在 list 文件中指定了权限,但 ACCESS_FINE_LOCATION SecurityException

c - 动态设置指向 int 的指针给出不正确的大小