在我的应用程序中,我启动一个QProcess来初始化一个Docker容器,该容器使用以下命令运行长时间执行:
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完成之前关闭,这导致Windows中仍运行“ Vmmem”进程。
如果尝试使用以下方法杀死CloseEvent上的QProcess:
void MainWindow::closeEvent(QCloseEvent *event){
process->kill();
}
但是,效果不理想。取而代之的是,操作系统中的进程vmmem仍在运行,直到完成为止。
我要终止启动的进程的方法是重新启动Docker守护进程,但我认为这不是正确的方法。
在退出之前,我如何杀死从Qt应用程序启动的所有进程(及其子进程)?