【发布时间】:2013-01-24 14:55:24
【问题描述】:
我想用 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();
}
结果是:
Ok : 结果.... " "" QProcess : 在进程仍然存在时被销毁 正在运行。
此消息并非每次都出现。
有什么问题?
【问题讨论】:
-
waitForFinished() 的超时时间为 30 秒,并返回等待是否超时。所以检查 waitForFinished() 返回值来检查进程是否真的退出了。
-
@FrankOsterfeld 这就是答案。如果您真的想等待该过程完成,我可以添加使用
waitForFinished ( -1)。 -
您错过了键入的 readAllStandard。它被写成 Strandard,这不是问题,但如果有人编译会令人困惑。
标签: qt shell qt-creator sh qprocess