我正在为我的嵌入式应用程序编写记录器。我需要把所有的日志都写到文件里。目前,我是打开和关闭文件的每一个写。
为了提高性能,在整个应用程序范围内保持日志文件打开并调用fflush()而不对每次写入关闭文件是安全的吗?
发布于 2020-03-04 08:50:35
如果您阅读linux程序员手册,您将发现fclose将“刷新流所指向的流并关闭底层文件描述符”。因此,您只需调用fclose()而不带fflush()。
如果您想要在同一个文件中多次写入。您可以保存打开的文件,只需多次调用fflush即可。"fflush()通过流的底层写函数强制对给定输出或更新流的所有用户空间缓冲数据进行写入“。
总之,把缓冲数据写成文件、写缓冲数据和关闭文件。
发布于 2020-03-04 08:59:16
在每次写入日志后只调用fflush()应该是安全的,并且保持文件打开是安全的,但最好以附加模式打开文件,特别是当其他进程写入同一个日志文件时。在这种情况下,仍然不足以确保原子写入。
https://stackoverflow.com/questions/60521718
复制相似问题