我想用Qt。
启动一个shell脚本QProcess process;
process.start(commandLine, QStringList() << confFile);
process.waitForFinished();
if(process.exitCode()!=0)
{
qDebug () << " Error " << process.exitCode() << process.readAllStrandardError();
}
else
{
qDebug () << " Ok " << process.readAllStrandardOutput() << process.readAllStrandardError();
}
结果是:
好的:结果....“”“QProcess:在进程静止时被破坏 运行
此消息不会每次都出现。
有什么问题?
答案 0 :(得分:10)
process.waitForFinished();
达到默认的30秒超时。请改用process.waitForFinished(-1);
。这将确保您等待该过程完成所需的时间,而不会超时。
答案 1 :(得分:0)
请注意,您将QProcess创建到本地范围。这意味着退出作用域时将删除该对象。在析构函数中,QProcess进程终止。当进程在析构函数中终止时,“进程仍在运行”消息“Destroyed”。
要解决此问题,应在进程已终止时调用QProcess析构函数。
如果你的例子中有QProcess :: waitForFinished(-1),它会发生,但这会阻止你的应用程序。