python模块signal

import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import time
import os
import signal
 
receive_times = 0
 
def handler(signalnum, handler):
    global receive_times
    print u"收到信号", signalnum, frame, receive_times
    receive_times += 1
    if receive_times > 3:
        exit(0) # 自己走
 
def main():
    signal.signal(signal.SIGINT, handler) # Ctrl-c
    # time.sleep(10) # SIGINT 信号同样能唤醒 time.sleep, 所以这里程序就会结束
    while True: # 改成 while 效果会好点
       pass
 
if __name__ == '__main__':
    main()

参考:https://blog.csdn.net/weixin_42350212/article/details/80588973

# 简单说:
监听信号,脚本或用户触发,接收信号,执行信号处理函数

# 如下:
当 **signal.signal(signal.SIGTERM, handler)** 监听过程中,
捕获到信号 **signal.SIGTERM** 时, 就会去执行 **handler** 函数
而 **handler**函数中一般都有全局变量,进程或线程通过此全局变量就可以知道该如何执行

**signal.SIGTERM** 信号是由用户或者脚本执行的 **ctrl+c** 或者 **kill** 命令来触发的。

 

posted @ 2020-07-16 13:59  bhz  阅读(221)  评论(0编辑  收藏  举报