qt - qt QProcess和 shell: 进程仍在运行时被破坏

  显示原文与译文双语对照的内容
107 2

我想用Qt启动一个 shell script 。


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();


}



结果是:

Ok: 结果。"""qprocess: 进程在进程运行时被破坏。

这里消息并非每次都显示。

哪里有问题?

时间: 原作者:

112 0

process.waitForFinished(); 正在按默认 30秒超时。 使用 process.waitForFinished(-1); 。这将确保等待进程完成的时间不超过任何超时时间。

原作者:
76 0

注意你在本地作用域中创建了 QProcess 。 这意味着当你退出范围时,对象将被删除。 在析构函数QProcess进程终止中。 当进程在析构函数中终止时,消息"已经销毁","进程仍在运行"。

为了解决这个问题,当进程已经终止时,应该调用QProcess析构函数。

如果将 QProcess::waitForFinished(-1) 作为示例,它将发生,但这将阻止你的应用程序。

原作者:
...