Hi Thiago, Thanks for replying. After reading on net, I found that "even if child process finishes and parent process is not waiting for the child process to finish, then parent process will not receive a finished signal. rather in this case, child process will become a zombie". I checked that after using waitforfinished(), I was getting finished signal. I will send you minimal compilable code. Is there any solution where I can get finished signal from child process without waiting for it.
Regards, Lata On Tue, Feb 28, 2012 at 12:40 AM, 1+1=2 <[email protected]> wrote: > Hi, > > please use > return a.exec(); > instead of > return 0; > > Debao > > 2012/2/27 lata agrawal <[email protected]>: > > Hi, > > > > I am running console application C1 in QProcess. I am starting this > console > > application C1 from another console application C2. Problem is: > > > > I am only getting finished signal from C1 when I use waitforfinshed() > else I > > am not getting finished signal from C1. Here is the code: > > > > QString strProgram; > > strProgram = <Path to C1>; > > > > updateProc->setProcessChannelMode(QProcess::ForwardedChannels); > > connect(updateProc, > > SIGNAL(finished(int,QProcess::ExitStatus)), > > SLOT(procStarted(int,QProcess::ExitStatus)), Qt::DirectConnection); > > > > updateProc->setStandardOutputProcess(this->thread()->parent()); > > updateProc->start(strProgram, arguments); > > > > Download is over, indicate through bool variable that > next > > downlaod can be started > > if(updateProc->waitForFinished(-1)) > > { > > qDebug("Update process finished!\n"); > > } > > else > > { > > qDebug("Update process not yet finished!\n"); > > } > > > > void FloDownloadManager::procStarted(int retVal ,QProcess::ExitStatus > > exitStat) > > { > > qDebug("Update process finished automatically!\n"); > > if(currentExecutingPriority == AdsUpdate) > > { > > emit adUpdateDone(); > > } > > blnStartNextUpdate = true; > > > > updateProc->deleteLater(); > > } > > > > > > If I comment the waitforfinished() code, I don't get the finished signal. > > But if I include the waitforfinished() signal, I don't get the finished > > signal. Code for C1 is as follows: > > > > #include <QtCore/QCoreApplication> > > #include "updater.h" > > > > int main(int argc, char *argv[]) > > { > > QCoreApplication a(argc, argv); > > > > qDebug("Inside Updater\n"); > > > > QTimer::singleShot(5000, &a, SLOT(quit())); > > qDebug("returning from Updater process!@@@@@@@@\n"); > > > > return 0; > > } > > > > I fail to understand what is going on wrong here. Someone please help. > > > > Regards, > > Lata > > > > _______________________________________________ > > Development mailing list > > [email protected] > > http://lists.qt-project.org/mailman/listinfo/development > > >
_______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
