Ano.Smith Asked: 2020-04-01 11:53:29 +0800 CST2020-04-01 11:53:29 +0800 CST 2020-04-01 11:53:29 +0800 CST 为什么 Ctrl + C 不会杀死在终端中运行的 Python? 772 我试图理解为什么当我在内部按下 Ctrl + C 和无限循环时整个 Python 进程没有被杀死的原因,或者就此而言,我在终端中运行的任何 Python 函数并且只有循环/函数被停止? command-line process signal 2 个回答 Voted Best Answer Andy J 2020-04-01T13:33:34+08:002020-04-01T13:33:34+08:00 这是因为 Python 解释器和交互式会话的设计。 Ctrl + C 向 Python 进程发送信号SIGINT,Python 解释器通过在当前运行的范围内引发KeyboardInterrupt 异常来处理该信号。 如果解释器在交互式会话中运行(即通过运行python或python3在控制台上),则打印当前函数中的异常并返回 Python 提示符。如果解释器正在运行一个脚本(例如 by python3 my_script.py),那么除非 KeyboardInterrupt 由脚本处理,否则整个程序将在引发异常时停止。 Ralph Willgoss 2021-12-21T22:56:39+08:002021-12-21T22:56:39+08:00 值得从您需要KeyboardInterrupt明确处理的文档中指出,即使您已经掌握了以下内容Exception: The exception inherits from BaseException so as to not be accidentally caught by code that catches Exception and thus prevent the interpreter from exiting.
这是因为 Python 解释器和交互式会话的设计。
Ctrl + C 向 Python 进程发送信号SIGINT,Python 解释器通过在当前运行的范围内引发KeyboardInterrupt 异常来处理该信号。
如果解释器在交互式会话中运行(即通过运行
python
或python3
在控制台上),则打印当前函数中的异常并返回 Python 提示符。如果解释器正在运行一个脚本(例如 bypython3 my_script.py
),那么除非 KeyboardInterrupt 由脚本处理,否则整个程序将在引发异常时停止。值得从您需要
KeyboardInterrupt
明确处理的文档中指出,即使您已经掌握了以下内容Exception
:The exception inherits from BaseException so as to not be accidentally caught by code that catches Exception and thus prevent the interpreter from exiting.