首页 > 解决方案 > 在没有 fclose() 的情况下调用 fflush() 是否安全

问题描述

我正在为我的嵌入式应用程序编写记录器。我需要将所有日志写入文件。目前我正在为每次写入打开和关闭文件。

为了提高性能,在整个应用程序范围内保持日志文件打开并调用 fflush() 而不在每次写入时关闭文件是否安全?

标签: cfclosefflush

解决方案


如果你阅读linux程序员手册,你会发现fclose会“刷新stream指向的流并关闭底层文件描述符”。所以,你可以在没有 fflush() 的情况下调用 fclose()。

如果您想多次写入同一个文件。您可以按住打开的文件,然后多次调用 fflush 。“fflush() 通过流的底层写入函数强制写入给定输出或更新流的所有用户空间缓冲数据”。

总之,fflush 将缓冲数据写入文件,fclose 写入缓冲数据并关闭文件。


推荐阅读