Python守护进程中子进程的终止

5

我在Python中有damon,它可以运行外部程序:

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

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

我该如何做才能使子进程也被终止?


你是如何杀死守护进程的?如果你使用kill -9,那么你无能为力,但是你可以为该信号编写一个信号处理程序,捕获它以杀死Java进程,然后优雅地退出。 - Benson
1个回答

8

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

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

结束子进程:
my_process.kill()

为了捕获 kill 信号,你可以像这样做:

为了捕获 kill 信号,你可以这样做:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接