QProcess :: setStandardOutputFile仅创建0kb文件

时间:2009-10-26 09:45:16

标签: qt qt4 stdout qprocess

我在WindowsXP-Machine上使用简单的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创建我想要的所有文件。但是log-File保持完全为空。当我想在qDebug()处写标准输出时也会发生同样的情况...... 为什么会发生这种情况,我该如何解决?

1 个答案:

答案 0 :(得分:8)

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

我运行ffmpeg,它发生了,它没有打印到stdout(可能,保留它为特殊模式,其中打印编码文件),所有文本消息打印到stderr。因此,您应该使用setStandardErrorFile()函数来捕获输出。