уничтожение дочернего подпроцесса в демоне python - PullRequest
5 голосов
/ 25 февраля 2011

У меня есть Дэймон в Python, который запускает внешнюю программу:

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

когда я убиваю демон, дочерний процесс (java) все еще выполняется

как сделать так, чтобы дочерний процесс также был убит?

1 Ответ

8 голосов
/ 25 февраля 2011

Используйте 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)
...