c - 在没有 fclose() 的情况下调用 fflush() 是否安全
问题描述
我正在为我的嵌入式应用程序编写记录器。我需要将所有日志写入文件。目前我正在为每次写入打开和关闭文件。
为了提高性能,在整个应用程序范围内保持日志文件打开并调用 fflush() 而不在每次写入时关闭文件是否安全?
解决方案
如果你阅读linux程序员手册,你会发现fclose会“刷新stream指向的流并关闭底层文件描述符”。所以,你可以在没有 fflush() 的情况下调用 fclose()。
如果您想多次写入同一个文件。您可以按住打开的文件,然后多次调用 fflush 。“fflush() 通过流的底层写入函数强制写入给定输出或更新流的所有用户空间缓冲数据”。
总之,fflush 将缓冲数据写入文件,fclose 写入缓冲数据并关闭文件。
推荐阅读
- javascript - 如果可以对if算法进行优化
- gatt - 您可以使用 GATT 配置服务来配置 Kontakt BeaconPro Eddystone-UID 值吗?
- flutter - 键盘取消模态中的SafeArea
- php - php文件处理的问题
- javascript - 如何切换映射 3 个 Observable 的流
- python - plt.figure() 在此示例代码中未显示任何图形
- javascript - Firebase 匿名用户一旦升级
- python - Cassandra Database Datastax Coordinator 节点超时?
- swiftui - 如何用鼠标在 SwiftUI 中画线?
- c++ - 如果数据不可用, curl_multi_wait 何时返回?