QProcess - stdout lesen
Verfasst: 26. März 2013 11:03
Hallo,
Ich möchte über QProcess ein Programm laufen lassen, dessen Ausgaben schließlich gelesen werden sollen.
Die Implementierung sieht im Groben folgendermaßen aus:
MyProcess erbt von QProcess.
Die beiden Methoden sind an die Signale finished() und readyReadStandardOutput() gebunden.
Ich nutze QT 5.0.1
Das Programm, das im QProcess läuft, ruft fflush(stdout) nach jedem printf() um sicherzustellen, dass der stdout-buffer geleert wird.
Das funktioniert meistens wunderbar, jedoch nicht immer. In manchen Fällen erhalte ich nicht alle Ausgaben, sondern nur die ersten. Der Rest wird einfach verschluckt. Ich habe auch schon probiert, via die Ausgaben ohne buffering durchzuführen. Jedoch erhalte ich dasselbe Ergebnis.
Ich wäre sehr dankbar, wenn ihr mir helfen könnt.
Ich möchte über QProcess ein Programm laufen lassen, dessen Ausgaben schließlich gelesen werden sollen.
Die Implementierung sieht im Groben folgendermaßen aus:
Code: Alles auswählen
void MyProcess::finishedSlot(int exitCode, QProcess::ExitStatus exitStatus)
{
m_output.append(readAllStandardOutput());
printf("%s", m_output.toStdString().c_str());
}
void MyProcess::readOutputSlot()
{
m_output.append(readAllStandardOutput());
}Die beiden Methoden sind an die Signale finished() und readyReadStandardOutput() gebunden.
Ich nutze QT 5.0.1
Das Programm, das im QProcess läuft, ruft fflush(stdout) nach jedem printf() um sicherzustellen, dass der stdout-buffer geleert wird.
Das funktioniert meistens wunderbar, jedoch nicht immer. In manchen Fällen erhalte ich nicht alle Ausgaben, sondern nur die ersten. Der Rest wird einfach verschluckt. Ich habe auch schon probiert, via
Code: Alles auswählen
setvbuf(stdout, NULL,_IONBF, 0);Ich wäre sehr dankbar, wenn ihr mir helfen könnt.