【发布时间】:2013-02-21 08:07:03
【问题描述】:
我正在尝试解决以下情况:
QProcess 应该运行命令并在达到所需的持续时间或命令完成时停止执行它。此 QProcess 由 QThread Worker 启动。
使用这个可以很容易地做到这一点:
QProcess task("executedTool -parameters");
task.start();
task.waitForFinished(desired_max_duration_in_ms);
但也必须有一个暂停洞的功能。 我可以通过 pthread 信号轻松地暂停 QProcess:
kill(task_.pid(), SIGSTOP);
和
kill(task_.pid(), SIGCONT);
但随后 waitForFinished-duration 继续运行,并在 QProcess 暂停时超过。
有人知道怎么做吗? 当我可以暂停运行 QProcess 和等待命令的孔 QThread 时,等待持续时间也会暂停。但是我怎样才能得到一个 QThread 的 pid 呢? 有没有更好的 Qt 解决方案来暂停 QProcess?
【问题讨论】:
-
我没有机会仔细检查这一点,但您可以像现在一样暂停它,然后执行
task.setProcessState(QProcess::NotRunning)以指示该进程不再运行。我认为应该停止 waitForFinished,但我不能 100% 确定。 -
感谢您的提示。不幸的是,它并没有停止 waitForFinished,它仍然用完了。我尝试了另一种现在有效的方法。如果您有兴趣,请参见下文:-)。
-
奇怪,我原以为状态改变也会停止 waitForFinished。至少你找到了解决办法。
标签: qt pthreads wait qthread qprocess