From c760bf2fb36be54768de6b11692c0323a0f003e6 Mon Sep 17 00:00:00 2001 From: haskal Date: Wed, 12 May 2021 18:02:01 -0400 Subject: [PATCH] graceful sigint --- megacom/__init__.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/megacom/__init__.py b/megacom/__init__.py index 2730208..e49db09 100644 --- a/megacom/__init__.py +++ b/megacom/__init__.py @@ -3,6 +3,7 @@ import asyncio import contextlib import errno import re +import signal import sys import termios import tty @@ -124,8 +125,14 @@ async def megacom(tty: str, baud: int, mode: str, logfile: Optional[str]) -> Non loop = asyncio.get_event_loop() keycodes = KeycodeHandler() - return await megacom_main(stdin, stdout, tty, baud, bytesize, parity, stopbits, loop, keycodes, - log) + + loop.add_signal_handler(signal.SIGINT, lambda: keycodes.exit_flag.set()) + + try: + return await megacom_main(stdin, stdout, tty, baud, bytesize, parity, stopbits, loop, + keycodes, log) + finally: + loop.remove_signal_handler(signal.SIGINT) async def megacom_main(stdin: asyncio.StreamReader, stdout: asyncio.StreamWriter, tty: str,