我们构建了复杂的基于控制台的工具,这些工具在控制台上产生了大量的评论。这些工具处理大量数据,因此运行成本高昂,我们不希望过于频繁地执行它们,尤其是在我们已经必须重复运行它们的测试期间。在此类测试中,我们经常将结果记录到一个文件中以捕获此注释以供检查: C:> [ourcommand] >log.txt 当应用程序运行到完成时,这非常有效。
如果应用程序崩溃(非法内存引用等),Windows 会在评论结尾之前讨厌地切断日志文件,因此我们无法看到崩溃时发生的情况。它还会在同一位置切断控制台输出。因此,当我们得到一个截断的日志文件时,我们必须在没有日志文件的情况下再次执行所有操作,才能看到最终答案。如果不记录,Windows 似乎不会缓冲控制台输出。
有没有办法告诉 Windows 在记录时不要缓冲控制台输出?我们的应用程序确实使用(Windows)C 运行时系统,不久前我们使用了“setvbuf”,如下所示: setvbuf(stdout, NULL, _IONBF, 0); 但无济于事。