QProcess 终止进程树
QProcess terminate process tree
我目前正在使用 Qt5.4 和 C++ 开发一个项目。
在这个项目中,我使用 QProcess class.
启动和停止进程
我现在正在扩展项目以启动批处理文件。问题是我想 terminate/kill 使用 QProcess 以批处理文件启动的进程。
调用终止不起作用(或者我调用错误)
编辑:
QProcess 是一个名为 ProcessHolder 的 class 的成员(指针)。 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;
}
请帮帮我,
本
所以Qt不提供此类问题的答案。 Windows 似乎没有正确实现进程树。
您可以使用CreateToolhelp32Snapshot查看所有进程和父进程。
然后你必须建造一棵树并用手擦掉它。您可以使用 QProcess::processID() 获取该树的根进程。
我目前正在使用 Qt5.4 和 C++ 开发一个项目。 在这个项目中,我使用 QProcess class.
启动和停止进程我现在正在扩展项目以启动批处理文件。问题是我想 terminate/kill 使用 QProcess 以批处理文件启动的进程。 调用终止不起作用(或者我调用错误)
编辑: QProcess 是一个名为 ProcessHolder 的 class 的成员(指针)。 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;
}
请帮帮我, 本
所以Qt不提供此类问题的答案。 Windows 似乎没有正确实现进程树。
您可以使用CreateToolhelp32Snapshot查看所有进程和父进程。
然后你必须建造一棵树并用手擦掉它。您可以使用 QProcess::processID() 获取该树的根进程。