QProcess和shell:进程仍在运行时被销毁

时间:2013-01-24 14:55:25

标签: qt shell qt-creator sh qprocess

我想用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:在进程静止时被破坏   运行

此消息不会每次都出现。

有什么问题?

2 个答案:

答案 0 :(得分:10)

process.waitForFinished();达到默认的30秒超时。请改用process.waitForFinished(-1);。这将确保您等待该过程完成所需的时间,而不会超时。

答案 1 :(得分:0)

请注意,您将QProcess创建到本地范围。这意味着退出作用域时将删除该对象。在析构函数中,QProcess进程终止。当进程在析构函数中终止时,“进程仍在运行”消息“Destroyed”。

要解决此问题,应在进程已终止时调用QProcess析构函数。

如果你的例子中有QProcess :: waitForFinished(-1),它会发生,但这会阻止你的应用程序。