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/