Код: Выделить всё
def pre_exec():
signal.signal(signal.SIGINT, signal.SIG_IGN)
try:
# block SIGINT in the parent script
signal.signal(signal.SIGINT, signal.SIG_IGN)
process = subprocess.Popen(['docker', 'compose', 'up'], env=env_vars, preexec_fn=pre_exec)
process.wait()
except subprocess.CalledProcessError as e:
print(f"An error occurred running Compose: {e}")
except KeyboardInterrupt:
pass
Я могу сказать, что родительский скрипт правильно игнорирует его, потому что без начального обработчика сигнала скрипт выходит в оболочку, пока композиция завершает работу. Похоже, что подпроцесс составления каким-то образом игнорирует регистрацию обработчика сигнала.
Подробнее здесь: https://stackoverflow.com/questions/791 ... ponding-to