QProcess läuft als Zombie macht aber nichts
Verfasst: 18. September 2007 21:15
Hallo,
ich arbeite mit QT3.3 ...habe eine kleine Gui programmiert die verschiedene Daten aus ein File einliest diese werdem dann in ein R kompatibles Format umgeschrieben und in eine Datei ablegt ...danach kann der Anwender sich über die Gui verschiedene Option zurecht klicken daraufhin baut die GUI ein Skript, das die nötigen Anweisungen für R beinhaltet um mit den Daten zu arbeiten... R ist ein Statistikprogramm welches man über die Konsole steuern kann. Mein Plan war es jetzt R als Prozess im 'Hintergrund zu starten uns das Skript über Stdin an R zu übergeben.... R macht leider gar ncihts läuft nur als Zombie . Das Skript was erzeugt wird hab ich getestet und das läuft auch allein mit R problemlos. Nun kann es manchmal auch vorkommen das R Fenster anzeigt obwohl es eine Konsolenanwendung ist , können diese Fenster angezeigt werden falls R mit Qprogress gestartet wurde? Nach den schreiben auf die Stdin kommt nichts über die Stdout bzw keine Rückmeldung entweder Funktioniert das so einfach nicht oder ich mach irgendwas falsch.... hier mal der Code
ich arbeite mit QT3.3 ...habe eine kleine Gui programmiert die verschiedene Daten aus ein File einliest diese werdem dann in ein R kompatibles Format umgeschrieben und in eine Datei ablegt ...danach kann der Anwender sich über die Gui verschiedene Option zurecht klicken daraufhin baut die GUI ein Skript, das die nötigen Anweisungen für R beinhaltet um mit den Daten zu arbeiten... R ist ein Statistikprogramm welches man über die Konsole steuern kann. Mein Plan war es jetzt R als Prozess im 'Hintergrund zu starten uns das Skript über Stdin an R zu übergeben.... R macht leider gar ncihts läuft nur als Zombie . Das Skript was erzeugt wird hab ich getestet und das läuft auch allein mit R problemlos. Nun kann es manchmal auch vorkommen das R Fenster anzeigt obwohl es eine Konsolenanwendung ist , können diese Fenster angezeigt werden falls R mit Qprogress gestartet wurde? Nach den schreiben auf die Stdin kommt nichts über die Stdout bzw keine Rückmeldung entweder Funktioniert das so einfach nicht oder ich mach irgendwas falsch.... hier mal der Code
Code: Alles auswählen
//.....
proc = new QProcess( this );
proc->addArgument( "R" );
connect( proc, SIGNAL(readyReadStdout()),
this, SLOT(readFromStdout()));
if ( !proc->start() )
qDebug("FehlerbeimStarten");
//proc->setCommunication(QProcess::Stdin);
for(QStringList::Iterator it = mRScript.begin();it != mRScript.end();it++)
{
qDebug("%s",(*it).latin1());
proc-> writeToStdin((*it));
}
if(proc->isRunning())
qDebug("%s","laeuft");
//....
void probe2ROptionW::readFromStdout()
{
qDebug("Hage?");
QString temp(proc->readStdout());
qDebug("%s",temp.latin1() );
}