Seite 1 von 1
printf-Ausgaben eines Konsolenprogramms abfangen
Verfasst: 29. Oktober 2008 15:39
von mathies
Hallo,
kann man printf (öder ähnliche) Ausgaben eines durch einen QProcess gestarteten Konsolen-Programms abfangen? Klappt bei mir nur mit cout Ausgaben.
Verfasst: 29. Oktober 2008 20:29
von Christian81
printf geht nach stdout, also sollte es genauso gehen.
Verfasst: 29. Oktober 2008 22:24
von mathies
Hi,
funktioniert leider nicht. Füge ich nach nem
printf() ne Leerzeile ein mit
bekomm ich wieder ein Event. Ohne bekomm ich erst eins nach etlichen Ausgaben, bringt mir so aber nicht viel, vor allem, wenn das durch
QProcess gestartete Programm nur
printf() benutzt

Verfasst: 29. Oktober 2008 22:27
von Christian81
printf() - Ausgaben werden wohl noch gepuffert. D.h. Du bekommst wie Du schon sagst die Ausgabe, aber nicht sofort. Da kann aber weder Qt noch sonstwer was dagegen tun - das muss im aufgerufenen Programm korrigiert werden.
Verfasst: 30. Oktober 2008 08:49
von solarix
Was genau gibst du mit printf aus? Hast du da ein Zeilenumbruch ("\n") drin?
Verfasst: 30. Oktober 2008 09:26
von mathies
Hallo,
es sind sowohl Zeilenumbrüche
\n als auch Rücksetzungen des Cursors
\r drin.
Wie Christian schon sagt, es wird wohl gepuffert. Leider bringt der
QIODevice::Unbuffered Flag auch nix
Ich habe das Programm was ich aufrufe nicht geschrieben und es hat einen sehr komplexen Logging-Prozess, da kann ich net drin rumwerkeln. Habe das jetzt mit der
std::endl Leerzeile nach einem Konsolenprint umgangen.