我在QThread中运行了一个BASH脚本(QProcess阻塞)(在C ++中)。这个BASH脚本包含大量文件,可以运行半小时。
如果用户想要关闭我的程序,我需要杀死我的BASH脚本。但是怎么样? QThread :: Quit将等待BASH程序在处理信号之前终止,QThread :: Terminate文档说它可能会立即杀死一个线程。
我想要相当于'kill -9 myscript'。有没有正确的Qt方法来做到这一点?
答案 0 :(得分:3)
waitForXxx
方法。QProcess::kill
来终止该过程。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 信号被发送到流程。