【发布时间】:2013-01-03 12:43:41
【问题描述】:
我正在编写一个 Qt GUI 应用程序(用于进行 XSL 转换)。要将错误消息打印到文件中,我正在使用如下调用:
freopen("my-error-file.txt", "w", stderr);
// call to libxslt function, which possibly prints to stderr
fclose(stderr);
我遇到的问题是,虽然 my-error-file.txt 是立即创建的,但它没有任何内容。当我关闭应用程序时,错误内容将写入文件。我认为这是正确的行为,但我真正想要的行为是 my-error-file.txt 写入并立即关闭,无论 GUI 窗口是否关闭。
我错过了一个函数调用吗?
我试过fflush(stderr),但没有效果。
【问题讨论】:
-
所以即使调用 fflush/fclose 文件也不会被刷新?你确定吗?您是否对此进行了调试,是否在调试器中跳过了对 fflush/fclose 的调用,然后立即在记事本中打开文件?尝试添加
fprintf(stderr, "TEST 123"); fflush(stderr); QMessageBox::warning(this, "", "Flushed!");,在弹出消息框时查看文件。 -
fflush 在每次写入文件后都应该这样做。