import asyncio import functools import os import signal """ 信號值 符號 行為 2 SIGINT 進程終端,CTRL+C 9 SIGKILL 強制終端 15 SIGTEM 請求中斷 20 SIGTOP 停止(掛起)進程 CRTL+D """ def exit(sign_name): print(f"獲取信號{sign_name}: exit") loop.stop() loop = asyncio.get_event_loop() for sign_name in ('SIGINT', 'SIGTERM'): loop.add_signal_handler(getattr(signal, sign_name), functools.partial(exit, sign_name)) print(" Ctrl+C 停止運行.") print(f"pid {os.getpid()}: 發送 SIGINT 和 SIGTERM 信號退出循環") try: loop.run_forever() finally: loop.close()