標籤:
訊號及訊號的處理
1.Linux訊號的介紹
訊號是一種軟體中斷。Linux系統中根據POSIX標準擴充的訊號機制。
1.訊號來源
1.硬體方式
1.當使用者按下某個鍵,產生訊號,如crtl+c
2.硬體異常產生訊號,除數為0,無效的儲存訪問等
2.軟體方式
1.使用者調用kill命令向進程發送任意訊號
2.進程調用kill或sigqueue函數發送訊號
3.檢測某種軟體條件已經具備發出訊號條件,如alarm設定的定時器
2.訊號的種類
linux 下命令 kill -l 列出所支援的全部訊號
[[email protected] C]$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
訊號的值在signal.h裡定義
1.可靠訊號和不可靠訊號
SIGHUP(1號) ----SIGSYS(31號) 繼承自UNIX,是不可靠訊號
Liunx根據POSIX標準定義的:SIGRTMIN(33號)------SIGRTMAX(64號) 可靠訊號,也叫做即時訊號
Linux沒有16號和32號訊號
訊號的可靠性指:訊號是否會丟失,或者說訊號是否支援排隊。
訊號產生和遞送有一個時間間隔,稱作訊號未決。
訊號會遞送多次,可靠訊號
只遞送一次,不可靠訊號
2.訊號優先順序
編號越小先被遞送,不可靠訊號先被遞送
3.進程對訊號的響應
1.捕捉訊號
2.忽略訊號
3.按系統預設處理 :通常的預設操作是終止進程
2.訊號處理
1.訊號的捕捉和處理
2.訊號處理函數的返回
3.訊號的發送
4.訊號的屏蔽
Linux C 程式 訊號及訊號的處理(19)