Home Articles

QProcess终止进程树

Asked
Viewed 797 times
-2

我目前正在使用Qt5.4和C进行项目 . 在这个项目中,我使用QProcess类启动和停止进程 .

我现在正在扩展项目以启动批处理文件 . 问题是我想使用QProcess终止/终止使用批处理文件启动的进程 . 调用终止不起作用(或者我称之为错误)

edit:QProcess是一个名为ProcessHolder的类的成员(指针) . 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;
}

请帮帮我,本

1 Answer

  • 0

    所以Qt没有为这类问题提供答案 . Windows似乎没有正确的进程树实现 .

    您可以使用CreateToolhelp32Snapshot查看所有进程和父进程 .

    然后你必须 Build 一个树并手工擦除它 . 您可以使用QProcess :: processID()来获取该树的根进程 .

Related