Seite 1 von 1

Programm mit QProcess starten und Ausgaben abfangen

Verfasst: 22. August 2007 17:27
von FaS
Hintergrund
Da ich keine plattformunabhängige Möglichkeit gefunden habe die (u.a. von 7-Zip verwendete) LZMA-Kompression zu benutzen, hab ich mich entschlossen die Konsolenversion von 7-Zip zu benutzen (7za.exe), für die es auch eine Linux-Version gibt.

Problem
Ich möchte den Fortschritt der Kompression auslesen, um ihn in einem Fortschrittsbalken anzuzeigen.
Startet man das Programm in einer Windows-Konsole, wird der Fortschritt unten rechts ständig in Prozent aktualisiert (siehe erster Screenshot).
In Qt liefert mir QProcess::readyReadStandardOutput() aber nur am Ende die allerletzte Ausgabe, mit dem Inhalt, wie er auch in der Konsole als letztes angezeigt wird (siehe letzter Screenshot).

Was kann ich machen, um an die Statusinformationen während dem Komprimieren zu gelangen?

Bin für jeden Hinweis dankbar,
FaS

Verfasst: 22. August 2007 17:40
von Volker
Ohne es getestet zu haben, könntest du in einem Thread oder per Timer versuchen

fflush(stdout);

aufzurufen. Evtl. reicht das um ein readyReadStandardOutput Signal auszulösen.

Verfasst: 22. August 2007 19:55
von FaS
Und wie komme ich an das stdout eines mit QProcess::start() gestarteten Prozesses?

Verfasst: 22. August 2007 20:33
von Volker
über readAllStandardOutput() ?

Verfasst: 22. August 2007 20:41
von FaS
Ich meine den Parameter für den fflush()-Befehl.
Wenn ich das 1:1 übernehme - fflush(stdout); - passiert nichts, keine zusätzlichen readyReadStandardOutput() signals. Ist ja auch eigentlich keine normale Ausgabe, der ändert ja direkt den Prozentwert statt einen neuen Auszugeben..

Verfasst: 23. August 2007 00:16
von Volker
Hm,... evtl. hilft dir das weiter:
http://support.microsoft.com/?scid=kb%3 ... &x=16&y=17

sonst kann ich dir grad auch nicht weiterhelfen.

Verfasst: 23. August 2007 00:36
von FaS
Hmm danke, aber das ist wohl sehr windows-spezifisch, ich bräuchte sowas auch für Linux. Ich hatte gehofft irgendwie über Qt da ranzukommen; dachte den Output eines Konsolen-Programms zu lesen wäre.

Verfasst: 23. August 2007 09:02
von upsala
Könnte es sein, daß das Zip-Programm einen Parameter hat um die Statusanzeige an-/abzuschalten oder daß es von der Art der Ausgabekonsole abhängig ist ob der Fortschritt angezeigt wird?

Verfasst: 23. August 2007 12:26
von FaS
Hab ich auch schon überlegt, gibts leider nicht.