5

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 ?

Djangonaut
  • 5,511
  • 7
  • 40
  • 53
  • How are you killing the daemon? If you use kill -9, there's nothing you can do, but otherwise you could probably write a signal handler for that signal, catch it to kill the java process, and then exit gracefully. – Benson Feb 25 '11 at 08:09

1 Answers1

8

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)
Patrick
  • 999
  • 1
  • 9
  • 21