windows - 终止使用 Qt 启动的 Docker 进程
问题描述
在我的应用程序中,我启动了一个启动 Docker 容器的 QProcess,该容器通过以下方式运行长时间执行:
QString path = "C:/Windows/system32/WindowsPowerShell/v1.0/powershell.exe";
QString commands = "docker run --rm --user user --workdir /tmp/project -v C:/Users/user/project:/tmp/project ofubuntu /tmp/project/script.sh";
process->start(path, commands.split(" "));
有时 Qt 应用程序在 QProcess 完成之前关闭,这使得“Vmmem”进程在 Windows 中运行。
如果试图杀死 CloseEvent 上的 QProcess:
void MainWindow::closeEvent(QCloseEvent *event){
process->kill();
}
然而,它并没有达到预期的效果。相反,操作系统中的进程 vmmem 仍在运行,直到完成。
我终止已启动进程的方法是重新启动 Docker 守护程序,但我认为这不是正确的方法。
在退出之前,我怎样才能杀死从我的 Qt 应用程序启动的所有进程(及其子进程)?
解决方案
推荐阅读
- scala - 每个案例作为 ScalaTest 中的单独测试 - JUnit ParameterizedTest 风格
- c# - 如何实现 ASP.NET Identity 在视图结果中隐藏一些列和行表
- python - Python 在相应索引处对嵌套列表中的值进行分组
- python - 在python中使用sql代码中的变量:操作参数必须是str
- java - Surefire maven 插件不执行其中一项测试
- java - Java Servlet Null 属性
- flutter - 如何对 Dart 中的简单函数进行空值检查?
- django - Django:将上下文添加到 TemplateView
- django - Django 上下文处理器“AnonymousUser”对象不可迭代
- javascript - 为什么我不能在将对象填充到 fetch 后对其进行操作?