child subprocess kill in python daemon

2019-02-17 21:51发布

问题:

I have damon in python which runs external program:

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

when I kill daemon, the child process (java) is still running

how can I make so that child process is also killed ?

回答1:

Use subprocess.Popen() instead of subprocess.call(). For example:

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

To terminate the child:

my_process.kill()

To capture the kill signal, you could so something like this:

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