QProcess :: setStandardOutputFileは0kbファイルのみを作成します
質問
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は必要なすべてのファイルを作成します。ただし、ログファイルは完全に空のままです。同じことがqDebug()で標準出力を書きたいときに起こります... なぜこれが起こり、どうすれば修正できますか?
解決
これは、通常、プロセスが次の2つのファイルに印刷されるために発生します。「標準出力」ファイルと「標準エラー」ファイル。プログラマは、出力するファイルを手動で決定できます( std :: cout
および std :: cerr
からアクセスします)。経験則では、プログラムの実際の結果を標準出力に出力し、エラー、診断などの標準エラー出力に出力します。
ffmpegを実行すると、stdoutに何も印刷されず(おそらく、エンコードされたファイルが印刷される特殊モード用に予約する)、すべてのテキストメッセージがstderrに印刷されます。したがって、キャプチャするには setStandardErrorFile()
関数を使用する必要があります出力。
所属していません StackOverflow