Seite 1 von 1

[gelöst]readyRead() kommt erst nach Prozessende

Verfasst: 11. April 2007 18:43
von Manto
Hallo zusammen.
Ich habe folgendes Problem:
Ich starte aus einer Qt-Anwendung folgendermaßen einen Prozess:

Code: Alles auswählen

infoGatherProcess = new QProcess(this);
	connect(infoGatherProcess, SIGNAL(readyRead()), this, SLOT(dataAvail()));
	infoGatherProcess->start("/home/manto/DIPLOM/helloworld/debug/src/helloworld");
Der Prozess, der da gestartet wird ist ein kleines Testprogramm, das folgendermaßen aussieht:

Code: Alles auswählen

int main(int argc, char *argv[])
{
      printf("Quit by typing 'q'\n");
	
      while ( getchar() != (int)'q' ) 
     {
           printf("Quit by typing 'q'\n");
      }

      return EXIT_SUCCESS;
}
Es ist in c geschrieben.

Mein problem ist, dass ich gerne in meiner Anwendung sehen würde, was in dem Prozess passiert. Allerdings kommt das readyRead()-Signal erst, wenn der Prozess beendet ist (also, wenn ich dem Prozess ein "q" geschickt habe), obwohl vorher ja schon Ausgaben im Prozess gemacht werden.

Was mache ich falsch?

Hier zur komplettierung noch der Slot, der mit readyRead verbunden ist:

Code: Alles auswählen

void MainWindow::dataAvail()
{
      QByteArray test;
      test += infoGatherProcess->readAll();
      mainEdit->append(test);

}
Ach ja: das ganze passiert unter Qt4.2.2 und unter Linux.

Verfasst: 11. April 2007 21:59
von Volker
Probier mal ein:

Code: Alles auswählen

fflush(stdout);
nach jedem printf, bzw. wenn Du's mit cout bzw. cerr machst mit einem

Code: Alles auswählen

	std::flush(std::cout);
	std::flush(std::cerr);
Evtl. hilft das weiter und löst schon vor Ende der Applikation ein readyRead aus.

Verfasst: 12. April 2007 00:18
von May-C
Vielleicht klappt es ja, wenn du es folgendermassen machst...

Code: Alles auswählen

infoGatherProcess = new QProcess(this);
infoGatherProcess->start("/home/manto/DIPLOM/helloworld/debug/src/helloworld");
infoGatherProcess->waitForStarted();
QByteArray test =  infoGatherProcess->readAll();
mainEdit->append(test);

Verfasst: 12. April 2007 17:24
von Manto
Sehr schön!
Die Flusherei hat geholfen.
Habt dank!