为了账号安全,请及时绑定邮箱和手机立即绑定

如何用Python捕获SIGINT?

如何用Python捕获SIGINT?

冉冉说 2019-06-13 17:10:21
如何用Python捕获SIGINT?我正在开发一个python脚本,它可以启动多个进程和数据库连接。我时不时地想用一个克特+C信号,我想做些清理。在Perl中,我会这样做:$SIG{'INT'} = 'exit_gracefully';sub exit_gracefully {     print "Caught ^C \n";     exit (0);}我怎么用Python来模拟这个呢?
查看完整描述

3 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

将您的处理程序注册到signal.signal就像这样:

#!/usr/bin/env pythonimport signalimport sysdef signal_handler(sig, frame):
        print('You pressed Ctrl+C!')
        sys.exit(0)signal.signal(signal.SIGINT, signal_handler)print('Press Ctrl+C')signal.pause()

改编自这里.

更多关于signal可以找到这里.


查看完整回答
反对 回复 2019-06-13
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

您可以将其视为异常(KeyboardInterruption),就像任何其他异常一样。创建一个新文件并使用以下内容从shell中运行它,以了解我的意思:

import time, sys

x = 1while True:
    try:
        print x
        time.sleep(.3)
        x += 1
    except KeyboardInterrupt:
        print "Bye"
        sys.exit()


查看完整回答
反对 回复 2019-06-13
  • 3 回答
  • 0 关注
  • 1056 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信