QProcess终止进程树 我目前正在研究一个QT5.4和C++的项目。 在这个项目中,我使用QProcess类启动和停止流程

QProcess终止进程树 我目前正在研究一个QT5.4和C++的项目。 在这个项目中,我使用QProcess类启动和停止流程,c++,qt,batch-file,qprocess,C++,Qt,Batch File,Qprocess,我现在正在扩展项目以启动批处理文件。问题是我想使用QProcess终止/终止由批处理文件启动的进程。 打电话终止不起作用,或者我打错电话了 编辑: QProcess是名为ProcessHolder的类的Memberpointer。startProcess和stopProcess处理该进程 bool ProcessHolder::startProcess(const QString &path, const QString

我现在正在扩展项目以启动批处理文件。问题是我想使用QProcess终止/终止由批处理文件启动的进程。 打电话终止不起作用,或者我打错电话了

编辑: QProcess是名为ProcessHolder的类的Memberpointer。startProcess和stopProcess处理该进程

bool ProcessHolder::startProcess(const QString &path, 
                                 const QStringList  &args) {
    process_->start(path, args);
    qDebug() << process_->errorString();
    if(process_->waitForStarted(1000)) {
        state_ = ProcessState::running;
        return true;
    } else {
        state_ = ProcessState::fail;
        return false;
    }
}

bool ProcessHolder::stopProcess() {
    process_->terminate();
    state_ = ProcessState::notRunning;
    return true;
}
请帮帮我,
Ben

因此Qt不能为此类问题提供答案。Windows似乎没有进程树的正确实现

您可以使用来查看所有流程以及其中的父流程

然后你必须造一棵树,然后用手把它擦掉。您可以使用QProcess::processID获取该树的根进程。

调用terminate不起作用-这取决于您调用QProcess的方式。例如,如果您使用的是静态函数QProcess::execute,那么它当然不会工作。我建议您展示您正在尝试做的示例代码。