当前位置: 首页 > 面试题库 >

如何在Python中捕获SIGINT?

侯英达
2023-03-14
问题内容

我正在研究启动多个进程和数据库连接的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()

代码改编自此处。



 类似资料:
  • 问题内容: 我有一个程序,在运行过程中有时需要调用python才能执行某些任务。我需要一个调用python并 捕获pythons stdout 并将其放入某个文件的函数。这是函数的声明 我的问题是捕获 给定命令 (pythonInput)的 所有python输出 。我没有使用python API的经验,我不知道执行此操作的正确方法是什么。我尝试过的第一件事是使用Py_run_SimpleStrin

  • 问题内容: 我想在其中捕获返回键,以便对当前标记的单元格执行某些操作。那就是:我希望用户在任何单元格处于高亮状态时按下键盘上的“返回/输入”键。按下该按钮应发出一种新方法。例如,显示带有该单元格内容的消息框。 如何将按回车键的事件连接到方法? 由于我是python的新手,所以我不知道该怎么做,并且感谢任何建议。 问题答案: 您的问题有点模棱两可。“捕捉返回键”是什么意思?有几种返回信息的方法。 如

  • 问题内容: 我在Python中构建了一个简短的url转换器引擎,并且看到大量的“管道破损”错误,并且很好奇在使用BaseHTTPServer类时如何最好地捕获它。这不是全部代码,但可以让您大致了解我目前正在做什么: 该代码本身运行良好,但是在生产中几乎立即开始引发错误: 这些错误的大部分似乎源于在调用send_header()方法时遇到的问题,其中我要写的是: 所以我很好奇在我的代码中尝试捕获此I

  • 问题内容: 如何获得在Python中引发的异常的名称? 例如, 例如,我正在捕获多个(或所有)异常,并想在错误消息中打印异常的名称。 问题答案: 以下是获取异常类名称的几种不同方法: 例如,

  • 问题内容: 发现在Java 1.6(以及从Eclipse)上运行时,吞没了该方法中的异常之后,我试图找到一种捕获这些异常的方法,而不会在我的所有实现中都添加throw / catch 。 该API建议覆盖应对此有所帮助: 导致此future报告一个ExecutionException,并以给定throwable作为其原因,除非已经设置或取消了此Future。计算失败时,run方法在内部调用此方法。

  • 问题内容: 不久前,我正在寻找Java中的可嵌入的分布式版本控制系统,我想我已经在JGit中找到了它,它是git的纯Java实现。但是,示例代码或教程的方式并不多。 如何使用JGit检索某个文件的HEAD版本(就像或应该做)? 我想这涉及一些rev-tree-walking,并且正在寻找代码示例。 问题答案: 不幸的是,Thilo的答案不适用于最新的JGit API。这是我找到的解决方案: 我希望