Ber*_*chi 3 qt stdout qt4 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);
Run Code Online (Sandbox Code Playgroud)
该过程工作得很好,ffmpeg创建我想要的所有文件.但是log-File保持完全为空.当我想在qDebug()处写标准输出时也会发生同样的情况...为什么会发生这种情况,我该如何解决?
发生这种情况是因为通常将进程打印成两个文件:"标准输出"文件和"标准错误"文件.程序员可以手动决定输出哪个文件(通过std::cout和访问它们std::cerr).经验法则是打印到stdout程序的实际结果,以及stderr - 错误,诊断等.
我运行ffmpeg,它发生了,它没有打印到stdout(可能,保留它为特殊模式,在那里打印编码文件),所有文本消息打印到stderr.所以你应该使用setStandardErrorFile()函数来捕获输出.