QProcess::setStandardOutputFile 只创建 0kb 文件

Posted

技术标签:

【中文标题】QProcess::setStandardOutputFile 只创建 0kb 文件【英文标题】:QProcess::setStandardOutputFile only creates 0kb File 【发布时间】:2009-10-26 09:45:15 【问题描述】:

我在 WindowsXP 机器上使用一个简单的 QProcess-Project:

QString program = "U:\\ffmpeg.exe";
QStringList arguments;
arguments << "-i" << "U:\\clock.avi" << "U:\\tmp_jpeg\\foo-%03d.jpeg";

process.setStandardOutputFile("U:\\log.txt", QIODevice::Append);
process.start(program, arguments);

该过程工作得很好,ffmpeg 创建了我想要的所有文件。但是日志文件保持完全空。当我想在 qDebug() 编写标准输出时也会发生同样的情况...... 为什么会发生这种情况,我该如何解决?

【问题讨论】:

【参考方案1】:

这是因为通常将打印处理成两个文件:“标准输出”文件和“标准错误”文件。程序员可以手动决定输出到哪个文件(通过std::coutstd::cerr 访问它们)。经验法则是将程序的实际结果打印到 stdout,并打印到 stderr - 错误、诊断等。

我运行 ffmpeg 并且发生这种情况,它不向 stdout 打印任何内容(可能是为特殊模式保留它,在那里打印编码文件),并且所有文本消息都打印到 stderr。所以你应该使用setStandardErrorFile()函数来捕获输出。

【讨论】:

以上是关于QProcess::setStandardOutputFile 只创建 0kb 文件的主要内容,如果未能解决你的问题,请参考以下文章