【问题标题】:child subprocess kill in python daemonpython守护进程中的子进程杀死
【发布时间】:2011-02-25 07:45:46
【问题描述】:

我在 python 中有运行外部程序的 damon:

subprocess.call(["java", "-jar", "start.jar"])

当我杀死守护进程时,子进程(java)仍在运行

我怎样才能让子进程也被杀死?

【问题讨论】:

  • 你是如何杀死守护进程的?如果使用 kill -9,则无能为力,否则您可能会为该信号编写一个信号处理程序,捕获它以终止 java 进程,然后优雅地退出。

标签: python subprocess daemon


【解决方案1】:

使用subprocess.Popen() 代替subprocess.call()。例如:

import subprocess
my_process = subprocess.Popen(['ls', '-l'])

终止孩子:

my_process.kill()

要捕获终止信号,您可以这样:

import signal
import sys
def signal_handler(signal, frame):
    sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)

【讨论】: