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

Code: Alles auswählen

std::cout << std::endl;
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.