有时候,我们写程序需要处理一些信号,比如在程序终止的时候写入到日志文件,比如截获Ctrl + C事件,这个时候就需要用自定义的信号处理方法了。
用到的函数是:
这个函数是对于Unix里的signal函数的一个简单包装。
signalnum是你需要处理的信号值,具体可以见Unix的signal说明,当然需要说明一下,在Windows下,只允许使用以下信号:
不然会报ValueError
的错误。
同时,这个函数会返回上一个对于该信号处理的handler。
handler就是指对应的处理信号的函数,函数原型如下所示
其中signum就是发生的信号,frame是发生信号的时候的函数调用栈。
当然,如果想在多线程程序里处理信号的话,必须在主线程里捕获。
以下是示例代码: