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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top