2009-10-26 50 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()函數捕獲輸出。