我正在使用proc = subprocess.Popen("calc.exe")
,然后time.sleep(time)
,然后要终止进程的情况下运行calc.exe(Windows 10,python 3.6):os.kill(proc.pid, -9)
或os.kill(proc.pid, signal.SIGTERM)
给了我错误
“访问被拒绝”。
我也尝试了proc.terminate-它没有帮助。
我还注意到proc.pid提供的PID与任务管理器中显示的PID不同。有什么想法可以杀死我的程序吗?
谢谢!
答案 0 :(得分:1)
您可以尝试使用Windows终止进程。
command = "Taskkill /IM calc.exe /F"
proc = subprocess.Popen(command)
或
import os
os.system("taskkill /im Calculator.exe /f")
如果您想确定的话,请尝试递归杀死!!
def kill_process(proc):
# Check process is running, Kill it if it is,
# Try to kill the process - 0 exit code == success
kill = "TaskKill /IM {} /F".format(proc)
res = subprocess.run(kill)
if res == 0:
return True # Process Killed
else:
kill_process(proc) # Process not killed repeat until it is!
kill_process('Calculator.exe')
答案 1 :(得分:0)
在python 3子进程API中,可以通过调用杀死孩子
Popen.kill()
,它是Windows(see here)中Popen.terminate()
的别名。如果这不起作用,您可以尝试
os.system("TASKKILL /F /PID [child PID]")
您可以使用Popen.pid()