1. 程式人生 > >Python Signal 訊號 (二十一)

Python Signal 訊號 (二十一)

常用訊號型別
SIGINT     終止程序     中斷程序,不可通過signal.signal()捕捉(相當於Ctrl+C)
SIGTERM    終止程序     軟體終止訊號,可通過signal.signal()捕捉(預設訊號,當os.kill()沒有指明訊號型別時,預設的是該訊號)
SIGKILL    終止程序     殺死程序,不可捕捉(相當於linux下的kill命令,windows下使用會丟擲異常)
SIGALRM    鬧鐘訊號     可以通過signal.alarm()和os.kill()傳送該訊號,可通過signal.signal()捕捉
SIGQUIT    退出程序     和SIGTERM類似,可通過signal.signal()捕捉

a.py

#coding=utf8
import signal,os,time
def onsignal_term(a,b):
    print '收到SIGTERM訊號'

def onsignal_quit(a,b):
    print '收到SIGQUIT訊號'

def onsignal_alrm(a,b):
    print '收到SIGALRM訊號'
    
signal.signal(signal.SIGTERM,onsignal_term)
signal.signal(signal.SIGQUIT,onsignal_quit)
signal.signal(signal.SIGALRM,onsignal_alrm)
signal.alarm(10)
while 1:
    print '程序id:',os.getpid()
    time.sleep(2)

b.py
import os,signal,time
os.kill(5097,signal.SIGTERM)
time.sleep(5)
#如果程序被終止後面的訊號不會起作用
os.kill(4976,signal.SIGINT)
os.kill(5006,signal.SIGKILL)
os.kill(5071,signal.SIGQUIT)
os.kill(5097,signal.SIGALRM)