我有一个Web服务器,需要管理一个单独的多进程子进程(即启动它并杀死它)。
对于基于Unix的系统,以下工作正常:
# save the pid as `pid`
ps = subprocess.Popen(cmd, preexec_fn=os.setsid)
# elsewhere:
os.killpg(os.getpgid(pid), signal.SIGTERM)
我这样做(使用
os.setsid
),因为否则杀死进度组也将杀死Web服务器。在Windows上,这些
os
函数不可用-因此,如果我想在Windows上完成类似的操作,该怎么做?我正在使用Python 3.5。
最佳答案
此答案由eryksun在注释中提供。我将其放在此处以突出显示,因为有人可能也参与了这个问题。
他的话是这样的:
我尝试过这个并成功:
process = Popen(args=shlex.split(command), shell=shell, cwd=cwd, stdout=PIPE, stderr=PIPE,creationflags=subprocess.CREATE_NEW_PROCESS_GROUP)
/*...*/
process .send_signal(signal.CTRL_BREAK_EVENT)
process .kill()
关于python - Windows是否等效于在Python 3中生成和杀死单独的进程组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47016723/