2009-10-26 141 views
3

我使用一个WindowsXP的机内A简单QProcess中项目:另外,QProcess :: setStandardOutputFile只创建0KB文件

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()写标准输出时发生同样的情况... 为什么会发生这种情况,我该如何解决这个问题?

回答

8

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

我运行ffmpeg,它发生,它不打印任何标准输出(可能,保留它的特殊模式,在那里打印编码文件),并且所有文本消息都打印到stderr。所以你应该使用setStandardErrorFile()函数捕获输出。