业务场景: A 进程启动B进程后退出, B进程干完活后启动 A进程退出
1.使用 QT ::QProcess 类的接口函数 waitForStarted() 出现 A进程退出来了 B进程一直没有起来的情况,
2. 解决方法:
- 在 waitFor Started() 后加延时1s可以解决
2)Qt 提供进程状态接口state , 确认进程状态 是 running后进行A进程的退出更安全
QProcess *p = new QProcess;p->setWorkingDirectory(d.path());p->start("chmod 777 " + QString("updater"));p->waitForFinished();// set parameterQStringList para;QString packNameWithPath=fileName;p->setArguments(para<<packNameWithPath);// startup//p->startDetached("updater");if(packNameWithPath!=nullptr){sleep(1);p->start("updater",para);if(p->waitForStarted() && p->state() == QProcess::Running){FMTLOG_I("start updater successed.");sleep(1); // avoid destroyid setpad while updater not realy startedQApplication::quit();}else{FMTLOG_E("start updater failed!");}}p->deleteLater();