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: 进程在进程运行时被破坏。

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

哪里有问题?

时间:原作者:0个回答

112 0

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

原作者:
76 0

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

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

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

原作者:
...