Вот простой скрипт Python, который порождает процесс:
import subprocess
import os
subprocess.run(['ping', '-i', '30', 'google.fr'],
preexec_fn=lambda : os.setpgrp())
Когда я kill -TERM <python-pid>
, он останавливает процесс python
, но процесс ping
продолжает работать: это то, чем я быложидая.
Но когда я kill -INT <python-pid>
, процессы python
и ping
останавливаются.Это отличается от CTRL-V
, который отправляет SIGINT
группе процессов, а не только процессу.В любом случае, setpgrp
делает процесс ping
лидером своей собственной группы процессов.
Так что я предполагаю, что где-то в коде Python, SIGINT
отправляется от ping
потомка, но SIGTERM
нет, но где этот код и где он задокументирован?
Редактировать : я использую Python 3.6 в Debian 9.