首页 > 解决方案 > 终止使用 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 应用程序启动的所有进程(及其子进程)?

标签: windowsqtdocker

解决方案


推荐阅读