Python Signal 訊號 (二十一)

2021-07-05 16:20:01 字數 1184 閱讀 3300

常用訊號型別

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 被阻塞的訊號產生時將保持在未決狀態,直到 程序解除對此訊號的阻塞,才 執行遞達的動作。注意 訊號阻塞和訊號忽略是不同的。只要訊號被阻塞就不...