1

我们有一个在 windows 和 unix 上运行的 c++ 应用程序(控制台)。此应用程序使用输出文件来输出系统调用/打印/等的详细日志文件。问题是,在某些情况下,我们可能会在添加新功能后获得 11/2 信号。

现在,每当发生这种情况时,我们都不会从日志文件中获取“几乎完整”的信息来追踪错误/问题的根源,因为当信号 11 发生时输出文件没有正确关闭。(它只是部分或零大小)

我们考虑在每个 fprintf 行打印之后添加一个刷新命令。问:

  1. 这被认为是一种很好的做法吗?
  2. fflush 在 windows 平台上运行良好吗?
  3. 在系统可能意外崩溃时保留日志文件的任何想法/其他方法?
4

1 回答 1

1

您需要将日志数据发送到文件,而不是发送到您可以在 30 分钟内创建的外部日志应用程序。可以通过套接字或通过管道或使用 SendMessage() Windows API(如果您以 Windows 为目标)发送输出。

于 2010-08-22T13:22:09.660 回答