python - 如何在 Python 中捕获 SIGINT?

标签 python controls signals

我正在编写一个启动多个进程和数据库连接的 python 脚本。时不时我想用 Ctrl+C 信号终止脚本,我想做一些清理工作。

在 Perl 中我会这样做:

$SIG{'INT'} = 'exit_gracefully';

sub exit_gracefully {
    print "Caught ^C \n";
    exit (0);
}

如何在 Python 中进行类似的操作?

最佳答案

使用 signal.signal 注册您的处理程序,如下所示:

#!/usr/bin/env python
import signal
import sys

def signal_handler(sig, frame):
    print('You pressed Ctrl+C!')
    sys.exit(0)

signal.signal(signal.SIGINT, signal_handler)
print('Press Ctrl+C')
signal.pause()

代码改编自 here .

更多关于 signal 的文档可以在 here 找到.

关于python - 如何在 Python 中捕获 SIGINT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1112343/

相关文章:

python - 我可以使用 seek 将额外的 header 信息添加到 numpy .npy 文件吗?

python - 如何使用递归来使用 Python 查找回文?

python - 为什么在解包元组时 var 类型会发生变化?

数据随机分布

如果我尝试在信号处理程序中调用开放系统,则代码转储

python - Pandas :将日期时间时间线从一个数据帧强加到另一个数据帧

显示全年的 asp.net 可用性日历

jquery - 如何创建视觉温度计

c - 在 C 中对 SIGCHLD 信号执行处理函数后会发生什么?

javascript - 让 child 知道它应该在 React 中更新它的状态