QThread ::终止vs杀死

时间:2018-03-27 18:59:22

标签: c++ qt kill qthread qprocess

我在QThread中运行了一个BASH脚本(QProcess阻塞)(在C ++中)。这个BASH脚本包含大量文件,可以运行半小时。

如果用户想要关闭我的程序,我需要杀死我的BASH脚本。但是怎么样? QThread :: Quit将等待BASH程序在处理信号之前终止,QThread :: Terminate文档说它可能会立即杀死一个线程。

我想要相当于'kill -9 myscript'。有没有正确的Qt方法来做到这一点?

2 个答案:

答案 0 :(得分:3)

  1. 不要使用其他线程。这绝不是必要的。
  2. 绝不使用任何waitForXxx方法。
  3. 使用QProcess::kill来终止该过程。
  4. 使用QProcess的信号在流程更改状态时收到通知,例如完了。

答案 1 :(得分:0)

  

我想要相当于'kill -9 myscript'。有没有正确的Qt方式   这样做?

来自Qt的文档http://doc.qt.io/qt-5/qprocess.html#kill

  

void QProcess :: kill()

     

杀死当前进程,使其立即退出。

     

在Windows上,kill()使用TerminateProcess,在Unix和macOS上使用    SIGKILL 信号被发送到流程。