`
东边日出西边雨
  • 浏览: 258087 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

自定义信号处理方式

 
阅读更多

在python中可以自定义信号的处理方式,在命令行下运行起一个程序,然后按ctrl+c程序会被中止,因为对于ctrl+c组合键发出的SIGINT信号,默认处理方式是中止当前程序。当然这里可以自定义处理方式:

 

#!/usr/bin/python

import signal

signal.signal(signal.SIGINT, signal.SIG_IGN)

 

signal函数第一个参数是信号类型,第二个参数是处理函数名称,signal.SIG_IGN 这个是signal模块中内置的函数,其作用是忽略该信号不做处理,也可以放入自己的函数,例如:

 

#!/usr/bin/python

import signal, sys

def func(a, b):
        print "will stop ..."
        sys.exit()

signal.signal(signal.SIGINT, func)

 

当按下ctrl+c,打印出 "will stop ... "后程序退出。 为什么func函数有两个参数呢,这个应该是解释器调用func函数时传了两个参数,我也不知道是为什么,但是我知道如果写成"def func():", 就会报错!

 

常用的情况下,一般将第二个参数用lambda做成单行的小函数作为参数, 如下:

 

 

#!/usr/bin/python

import signal, sys

signal.signal(signal.SIGINT, lambda *args: sys.exit("keyboard interrupt"))

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics