QProcess 终止进程树
Posted
技术标签:
【中文标题】QProcess 终止进程树【英文标题】:QProcess terminate process tree 【发布时间】:2015-07-06 14:00:09 【问题描述】:我目前正在开发一个使用 Qt5.4 和 C++ 的项目。 在这个项目中,我使用 QProcess 类启动和停止进程。
我现在正在扩展项目以启动批处理文件。问题是我想使用 QProcess 终止/终止使用批处理文件启动的进程。 调用终止不起作用(或者我可能调用错了)
编辑: 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;
请帮帮我, 本
【问题讨论】:
“调用终止不起作用” - 这取决于你如何调用 QProcess。例如,如果您使用静态函数 QProcess::execute,那么它当然不会工作。我建议你展示你正在尝试做的示例代码。 【参考方案1】:所以 Qt 没有为这类问题提供答案。 Windows 似乎没有正确实现进程树。
您可以使用CreateToolhelp32Snapshot 查看所有进程和父进程。
然后你必须建造一棵树并手动擦除它。您可以使用 QProcess::processID() 来获取该树的根进程。
【讨论】:
以上是关于QProcess 终止进程树的主要内容,如果未能解决你的问题,请参考以下文章