我正在为我的嵌入式应用程序编写记录器。我需要将所有日志写入文件。目前,我正在打开和关闭每个写入的文件。
为了提高性能,在整个应用程序范围内保持日志文件打开,并在每次写入时不关闭文件的情况下调用fflush((是否安全?
如果您阅读linux程序员手册,您会发现fclose将"刷新流指向的流并关闭底层文件描述符"。因此,您可以直接调用fclose((而不调用fflush((。
若要在同一个文件中多次写入。您可以保持打开的文件,只需多次调用fflush即可。"fflush((通过流的底层写入函数强制写入给定输出或更新流的所有用户空间缓冲数据"。
总之,fflush将缓冲的数据写入文件,fclose写入缓冲的数据并关闭文件。
每次写入日志后只调用fflush()
并保持文件打开应该是安全的,但最好以附加模式打开文件,尤其是当其他进程写入同一日志文件时。在这种情况下,确保原子写入仍然是不够的。