QProcess :: setStandardOutputFile schafft nur 0kb Datei
Frage
Ich bin mit einem einfachen QProcess-Projekt auf einer Windows XP-Maschine:
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);
Der Prozess funktioniert gut, ffmpeg erstellt alle Dateien, die ich will. Aber die Log-Datei hält komplett leer. Das gleiche passiert, wenn ich die Standard-Ausgabe bei qDebug () schreiben möchten ... Warum passiert und wie kann ich es beheben?
Lösung
Dies geschieht, weil in der Regel Druck in zwei Dateien verarbeitet: „Standardausgabe“ -Datei und „Standardfehler“ Datei. Programmierer können manuell entscheiden, welche Datei für die Ausgabe an (sie sind über std::cout
und std::cerr
zugegriffen wird). Die Faustregel drucken das tatsächliche Ergebnis des Programms nach stdout und stderr zu -. Fehler, Diagnose etc
Ich betreiben ffmpeg und es geschieht so, dass es nichts druckt (wahrscheinlich, es für spezielle Modus reserviert, wo codierte Datei dort gedruckt wird) nach stdout und alle Textnachrichten an stderr gedruckt. So sollten Sie setStandardErrorFile()
Funktion die Ausgabe zu erfassen.