我执行以下操作以启动进程并等待其完成(在这种情况下我故意避免使用SIGNAL / SLOTS)。
QProcess *myProcess = new QProcess();
QString program = "test.exe";
QStringList args;
myProcess->start(program, args);
myProcess->waitForStarted();
while( myProcess->state() == QProcess::Running )
{
// Do other things...
}
我可以验证test.exe是否退出。但是进程状态由于某种原因始终是QProcess :: Running。我在Windows上使用Qt 4.8.2。
答案 0 :(得分:1)
如果"做其他事情"不包括处理线程事件循环的事件,state
永远不会有机会更新其waitForFinished
。
finished()
如果需要阻止线程或连接到User
信号,则为name
。
答案 1 :(得分:0)
我认为state()
不应该用于检查已关闭的程序,但您可以使用while(!waitForFinished(1))
之类的内容。