C++ QThread::终止vs终止

C++ QThread::终止vs终止,c++,qt,kill,qthread,qprocess,C++,Qt,Kill,Qthread,Qprocess,我在QThread(C++中)中运行了一个BASH脚本(QProcess阻塞)。这个BASH脚本包含大量文件,可以运行1/2小时 如果用户想关闭我的程序,我需要终止BASH脚本。但是怎么做呢?QThread::Quit将在处理信号之前等待BASH程序终止,QThread::terminate文档称它可能会立即终止线程 我想要“kill-9myscript”的等价物。有没有合适的方法来实现这一点 不要使用额外的线程。没必要 切勿使用任何waitForXxx方法 使用QProcess::kill终止

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

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

我想要“kill-9myscript”的等价物。有没有合适的方法来实现这一点

  • 不要使用额外的线程。没必要
  • 切勿使用任何
    waitForXxx
    方法
  • 使用
    QProcess::kill
    终止进程
  • 使用
    QProcess
    的信号,在流程改变状态(如完成)时获得通知
  • 我想要“kill-9myscript”的等价物。有合适的方法吗 这样做

    从Qt的文档:

    void QProcess::kill()

    终止当前进程,使其立即退出

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


    不看代码很难说,但我认为最好通过非阻塞
    QProcess
    (使用信号/插槽跟踪状态更改)运行
    bash
    脚本,然后使用或(如果需要强制终止该进程)。我认为
    QThread
    只是在这里碍事。