如何使用 QProcess 等待子进程?

Posted

技术标签:

【中文标题】如何使用 QProcess 等待子进程?【英文标题】:How to wait child process with QProcess? 【发布时间】:2021-07-27 19:05:00 【问题描述】:

我正在尝试使用此代码等待子进程:

auto child = new QProcess;
child->start("cmd.exe");
child->waitForFinished();

但是 cmd.exe 没有打开,主程序运行。错误是什么?

我应该如何正确等待? waitForFinished 默认等待 30000 毫秒。如果我想无限等待怎么办?

【问题讨论】:

【参考方案1】:

建议使用waitForStarted(doc)检查返回值看程序是否启动成功,并尝试使用CMD的全路径:"C:/windows/system32/cmd.exe"

另外,上网查一下,这个问题已经被here问过了。

要无限等待,您需要使用 -1 (doc) 调用 waitForFinished

child->waitForFinished(-1);

【讨论】:

以上是关于如何使用 QProcess 等待子进程?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 上通过 QProcess 启动提升的子进程?

Qt使用QProcess进程间双向通信(linux和win系统)

如何关闭 Qt 子进程并让子进程执行清理代码?

如何结合使用 QProcess::startDetached() 和 setStandardOutputFile()

如何在 QProcess 中使用队列?

如何让子进程等待信号?