【发布时间】:2022-01-16 19:11:59
【问题描述】:
我正在尝试运行一个 python 脚本,该脚本使用 subprocess.popen () 运行另一个 python 脚本的一个或多个实例。在某些时候,我需要轻轻地完成它们。这些脚本执行一个 while 循环,当 ctrl-c 被捕获时,它们执行一个清理例程并终止。
在开始时,我的想法是使用 subproc.send_signal() 将 ctrl-c 发送到那些脚本,但它不起作用。 我尝试使用 subproc.terminate() 或 os.kill(os.kill(subproc.pid, signal.CTRL_C_EVENT)) 和其他建立在互联网上的解决方案,但没有任何效果。
如何温和地终止我的脚本?我运行脚本的方式是否正确? 这是我的代码:
processes = []
for i in range(0, capsules_number):
p = subprocess.Popen(["python.exe ", "Capsula.py ", str(i)])
processes.append(p)
input("Press any key to terminate programs")
for p in processes:
# Terminate process
processes.remove(p)
【问题讨论】:
-
ctrl+c 向进程发送
signal.SIGINT信号,那么您是否考虑过发送这些信号? -
是的,我已经尝试了你所有的建议,但它不起作用......
标签: python subprocess kill-process