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.