我想用子流程打开图像,以便用户可见,然后关闭图像使其消失。关闭具有子流程的图像
这个问题以前已经问过,但是我发现的答案并没有为我工作。以下是我已经检查:
Killing a process created with Python's subprocess.Popen()
How to terminate a python subprocess launched with shell=True
How can I close an image shown to the user with the Python Imaging Library?
我需要的代码打开一个图像(预览(可选),默认情况下在我的Mac),等一下,然后关闭图像。
openimg = subprocess.Popen(["open", mypath])
time.sleep(1)
openimg.terminate()
openimg.kill()
一切都告诉我要终止()和杀死(),但仍然没有关闭图像。
这不一定要使用预览,我也愿意听取其他选项。
编辑:我已经试过另外下面的代码,仍然没有成功
print('openimg\'s pid = ',openimg.pid)
os.kill(openimg.pid, signal.SIGKILL)
我没有一个Mac来检查,但我似乎记得'open'是异步的 - 它产生了一个预览过程(或任何它启动的应用程序)并立即退出。所以等到你的Python代码暂时休眠了一段时间后,“open”进程就不再存在了。如果是这样的话,我想你需要找到一些方法将信号发送到进程“open”启动。作为一个测试,如果你将'-W'选项传递给'open'(可能还有'-n'),那么它是否工作? –
感谢@DavidZ的帮助,我有点新,我不知道如何在代码中包含'-W'或'-n'。我一直收到无效语法或文件未找到错误。你能给我一个它的样子吗? – Drake491
让我只写一个答案。 –