业务场景: 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 parameter
QStringList 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 started
QApplication::quit();
}
else{
FMTLOG_E("start updater failed!");
}
}
p->deleteLater();