【问题标题】:freopen does not write the data until my application closes在我的应用程序关闭之前,freopen 不会写入数据
【发布时间】: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 在每次写入文件后都应该这样做。

标签: c++ c qt


【解决方案1】:

我是个傻瓜。我在 fclose 之前调用了 fflush,但函数在调用这些函数之前就返回了。

【讨论】:

    猜你喜欢
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多