【问题标题】:Gently kill a process created with Python's subprocess.Popen() in Windows在 Windows 中轻轻杀死使用 Python 的 subprocess.Popen() 创建的进程
【发布时间】: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)

   

【问题讨论】:

标签: python subprocess kill-process


【解决方案1】:

来自subprocess 文档:

CTRL_C_EVENT 和 CTRL_BREAK_EVENT 可以发送到以 creationflags 参数启动的进程,该参数包括 CREATE_NEW_PROCESS_GROUP。

【讨论】:

  • 谢谢!你能告诉我更多吗?我不知道进程组是什么...
  • 这个答案doesn't actually work。阅读副本。
猜你喜欢
  • 1970-01-01
  • 2011-05-04
  • 2013-10-31
  • 1970-01-01
  • 2017-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多