【发布时间】:2019-09-21 13:06:29
【问题描述】:
我已经尝试了至少十几种不同的 python 脚本来杀死这里显示的子进程,包括
但我非常沮丧。
这里是蟒蛇:
import subprocess, os
import time,signal,psutil
process = subprocess.Popen(['open', '/Applications/Preview.app', 'images/conv1.jpg'], shell=False)
print (process.pid)
time.sleep(2)
print (process.pid)
os.kill(process.pid, signal.SIGKILL)
进程 id 打印在终端中,预览开始并打开图像,进程 id 再次打印,python 终止,我回到 shell 提示符 - 但预览和图像仍然打开。当我在“活动监视器”中检查进程 id 时,结果是 preview.app 的 ACTUAL 进程 id 比值 process.pid 大一。
我必须把最后一行改成这样:
os.kill(process.pid+1, signal.SIGKILL)
它有效。为什么????
【问题讨论】:
-
如果我去掉最后一行以便预览不会终止并且还注释掉 time.sleep(2),那么实际进程 ID 比打印的值大 5。这是什么怪事?
-
你确定它不是由其他东西启动的吗?另外,您的第一个链接使用的是
os.killpg,而不是os.kill。
标签: python macos subprocess