【发布时间】:2010-08-22 13:00:49
【问题描述】:
我们有一个在 windows 和 unix 上运行的 c++ 应用程序(控制台)。 此应用程序使用输出文件来输出系统调用/打印/等的详细日志文件。 问题是,在某些情况下,我们可能会在添加新功能后获得 11/2 信号。
现在,每当发生这种情况时,我们都不会从日志文件中获取“几乎完整”的信息来追踪错误/问题的根源,因为当信号 11 出现时输出文件没有正确关闭。 (它只是部分或零大小)
我们考虑在每个 fprintf 行打印之后添加一个刷新命令。 问:
- 这算是一种好的做法吗?
- fflush 在 windows 平台上运行良好吗?
- 在系统可能意外崩溃时保留日志文件的任何想法/其他方法?
【问题讨论】:
-
在另一种语言中,当事物可能崩溃时,我倾向于使用刷新。但是,冲洗会减慢速度。仅在不稳定的区域周围使用。或者,将消息转储到 Microsoft 队列或其他一些稳定的内存位置(出于速度目的)。当然,最好的办法是找出并修复崩溃。
标签: windows logging signals crash fflush