常用訊號型別
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)
Linux入門 訊號(二) 阻塞訊號
實際執行訊號的處理動作稱為訊號遞達 delivery 訊號從產生到遞達之間的狀態,稱為訊號未決 pending 程序可以選擇阻塞 block 某個訊號。被阻塞的訊號產生時將保持在未決狀態,直到程序接觸對此訊號的阻塞,才執行遞達的操作。阻塞和忽略不同,只有訊號阻塞就不會遞達,而忽略是在訊號遞達之後可選...
訊號及訊號處理(二) 可靠訊號與不可靠訊號
一 可靠訊號與不可靠訊號有哪些?sighup 1號 至 sigsys 31號 之間的訊號都是繼承自unix系統,是不可靠訊號,也稱為非實時訊號 sigrtmin 33號 與 sigrtmax 64號 之間的訊號,它們都是可靠訊號,也稱為實時訊號 二 什麼是可靠訊號?可靠性是指訊號是否會丟失,即該訊號...
Linux下的訊號(二) 阻塞訊號
1,在此之前,必須先了解幾個概念 訊號遞達 delivery 實際執行訊號處理的動作。訊號未決 pending 訊號從產生到遞達之間的狀態。訊號阻塞 block 被阻塞的訊號產生時將保持在未決狀態,直到 程序解除對此訊號的阻塞,才 執行遞達的動作。注意 訊號阻塞和訊號忽略是不同的。只要訊號被阻塞就不...