我在Windows上,正在使用subprocess.Popen
启动一个新进程,希望在某个点终止。但是,我启动的gui仍然可见。最简单的例子是启动PNG查看器:
import subprocess
proc = subprocess.Popen(['start', 'test.png'], shell=True)
proc.kill()
在kill()
命令之后,gui仍然在运行,我必须手动关闭它。你知道吗
据我所知,这可以在Linux上通过传递preexec_fn=os.setsid
到Popen
(参见How to terminate a python subprocess launched with shell=True)来解决。因为命令os.setsid
是特定于Linux的,所以我不知道如何在Windows上实现它。你知道吗
另一种方法是去掉shell=True
,但是,我不知道如何实现这一点,因为我必须传递文件名。你知道吗
任何帮助都将不胜感激。。。你知道吗
如果您想摆脱
shell=True
,您必须给出可执行文件的完整路径。你知道吗start
是一个内部命令:它需要cmd.exe
(您可以开始使用shell=True
或直接运行)。Popen()
不等待start
命令完成,start
不等待PNG查看器在调用proc.kill()
时退出,start
可能已经完成。你知道吗您可以尝试直接运行PNG查看器(如果在标准位置可以找到相应的exe文件,则不需要提供完整路径)。你知道吗
How to terminate a python subprocess launched with shell=True也有一个针对Windows的解决方案(如果PNG viewer启动子进程,您可以试试)。你知道吗
相关问题 更多 >
编程相关推荐