Linux 信號機制

1、信號類型
Linux系統共定義了64種信號,分爲兩大類:可靠信號與不可靠信號,前32種信號爲不可靠信號,後32種爲可靠信號。
不可靠信號: 也稱爲非實時信號,不支持排隊,信號可能會丟失, 比如發送多次相同的信號, 進程只能收到一次. 信號值取值區間爲1~31;


可靠信號: 也稱爲實時信號,支持排隊, 信號不會丟失, 發多少次, 就可以收到多少次. 信號值取值區間爲32~64

SignaName Number	Description
SIGHUP	  1	Hangup (POSIX)//掛起
SIGINT	  2	Terminal interrupt (ANSI)//中斷
SIGQUIT	  3	Terminal quit (POSIX)//退出
SIGILL	  4	Illegal instruction (ANSI)//非法指令
SIGTRAP	  5	Trace trap (POSIX)//斷點或陷阱指令
SIGABRT   6	//abort發出的信號 -->SIGIOT IOT Trap (4.2 BSD)?
SIGBUS	  7	BUS error (4.2 BSD)//非法內存
SIGFPE	  8	Floating point exception (ANSI)//浮點異常
SIGKILL	  9	Kill(can't be caught or ignored) (POSIX)//kill信號
SIGUSR1	  10	User defined signal 1 (POSIX)//用戶信號1
SIGSEGV	  11	Invalid memory segment access (ANSI)//用戶信號2
SIGUSR2	  12	User defined signal 2 (POSIX)//用戶信號2
SIGPIPE	  13	Write on a pipe with no reader, Broken pipe (POSIX)//管道破損,沒有讀端的管道寫數據
SIGALRM	  14	Alarm clock (POSIX)//alarm發出的信號
SIGTERM	  15	Termination (ANSI)//終止信號
SIGSTKFLT 16	Stack fault//棧溢出
SIGCHLD	  17	Child process has stopped or exited, changed (POSIX)//子進程退出,默認忽略
SIGCONT	  18	Continue executing, if stopped (POSIX)//進程繼續
SIGSTOP	  19	Stop executing(can't be caught or ignored) (POSIX)//進程停止
SIGTSTP	  20	Terminal stop signal (POSIX)//進程停止
SIGTTIN	  21	Background process trying to read, from TTY (POSIX)//進程停止,後臺進程從終端讀數據時
SIGTTOU	  22	Background process trying to write, to TTY (POSIX)//進程停止,後臺進程想終端寫數據時
SIGURG	  23	Urgent condition on socket (4.2 BSD)//I/O有緊急數據到達當前進程
SIGXCPU	  24	CPU limit exceeded (4.2 BSD)//進程的CPU時間片到期
SIGXFSZ	  25	File size limit exceeded (4.2 BSD)//文件大小的超出上限
SIGVTALRM 26	Virtual alarm clock (4.2 BSD)//	虛擬時鐘超時
SIGPROF	  27	Profiling alarm clock (4.2 BSD)//profile時鐘超時 ps -o pid,ppid,state,tty,command


SIGWINCH  28	Window size change (4.3 BSD, Sun)//窗口大小改變
SIGIO	  29	I/O now possible (4.2 BSD)//I/O相關
SIGPWR	  30	Power failure restart (System V)//關機
SIGSYS    31    系統調用異常



SIGKILL(9)與SIGALRM(15)區別?
SIGSTOP 與 SIGTSTP區別?  


2、信號產生
信號來源分爲硬件類和軟件類
-硬件方式
用戶輸入:比如在終端上按下組合鍵ctrl+C,產生SIGINT信號;
硬件異常:CPU檢測到內存非法訪問等異常,通知內核生成相應信號,併發送給發生事件的進程;
-軟件方式
通過系統調用,發送signal信號:kill(),raise(),sigqueue(),alarm(),setitimer(),abort()


參考:
Linux信號(signal)機制 http://gityuan.com/2015/12/20/signal/







參考:
Linux信號(signal)機制 http://gityuan.com/2015/12/20/signal/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章