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
1, 終端按鍵產生訊號ø ctrl + c → 2) sigint(終止/中斷) "int" ----interrupt
ø ctrl + \ → 3) sigquit(退出)
ø ctrl + z → 20) sigtstp(暫停/停止) "t" ----terminal 終端。
2, 硬體異常產生訊號ø 匯流排錯誤 → 7) sigbus
ø 除0操作 → 8) sigfpe (浮點數例外) "f" -----float 浮點數。
ø 非法訪問記憶體 → 11) sigsegv (段錯誤)
3, linux常規訊號一覽表
其中 2(sigint), 3(sigquit), 6(sigabrt), 9(sigkill), 11(sigsegv), 14(sigalrm), 17(sigchld), 19(sigstop), 20(sigtstp)訊號要記住
編號訊號
對應事件
預設動作
1sighup
使用者退出shell時,由該shell啟動的所有程序將收到這個訊號
終止程序
2sigint
當使用者按下了組合鍵時,使用者終端向正在執行中的由該終端啟動的程式發出此訊號
終止程序
3sigquit
使用者按下組合鍵時產生該訊號,使用者終端向正在執行中的由該終端啟動的程式發出些訊號
終止程序
4sigill
cpu檢測到某程序執行了非法指令
終止程序並產生core檔案
5sigtrap
該訊號由斷點指令或其他 trap指令產生
終止程序並產生core檔案
6sigabrt
呼叫abort函式時產生該訊號
終止程序並產生core檔案
7sigbus
非法訪問記憶體位址,包括記憶體對齊出錯
終止程序並產生core檔案
8sigfpe
在發生致命的運算錯誤時發出。不僅包括浮點運算錯誤,還包括溢位及除數為0等所有的演算法錯誤
終止程序並產生core檔案
9sigkill
無條件終止程序。本訊號不能被忽略,處理和阻塞
終止程序,可以殺死任何程序
10siguse1
使用者定義 的訊號。即程式設計師可以在程式中定義並使用該訊號
終止程序
11sigsegv
指示程序進行了無效記憶體訪問(段錯誤)
終止程序並產生core檔案
12sigusr2
另外乙個使用者自定義訊號,程式設計師可以在程式中定義並使用該訊號
終止程序
13sigpipe
broken pipe向乙個沒有讀端的管道寫資料
終止程序
14sigalrm
定時器超時,超時的時間 由系統呼叫alarm設定
終止程序
15sigterm
程式結束訊號,與sigkill不同的是,該訊號可以被阻塞和終止。通常用來要示程式正常退出。執行shell命令kill時,預設產生這個訊號
終止程序
16sigstkflt
linux早期版本出現的訊號,
現仍保留向後相容
17sigchld
子程序結束時,父程序會收到這個訊號
忽略這個訊號
18sigcont
如果程序已停止,則使其繼續執行
繼續/忽略。
19sigstop
停止程序的執行。訊號不能被忽略,處理和阻塞
為終止程序
20sigtstp
停止終端互動程序的執行。按下組合鍵時發出這個訊號
暫停程序
21sigttin
後台程序讀終端控制台
暫停程序
22sigttou
該訊號類似於sigttin,在後台程序要向終端輸出資料時發生
暫停程序
23sigurg
套接字上有緊急資料時,向當前正在執行的程序發出些訊號,報告有緊急資料到達。如網路帶外資料到達
忽略該訊號
24sigxcpu
程序執行時間超過了分配給該程序的cpu時間 ,系統產生該訊號並傳送給該程序
終止程序
25sigxfsz
超過檔案的最大長度設定
終止程序
26sigvtalrm
虛擬時鐘超時時產生該訊號。類似於sigalrm,但是該訊號只計算該程序占用cpu的使用時間
終止程序
27sgiprof
類似於sigvtalrm,它不公包括該程序占用cpu時間還包括執行系統呼叫時間
終止程序
28sigwinch
視窗變化大小時發出
忽略該訊號
29sigio
此訊號向程序指示發出了乙個非同步io事件
忽略該訊號
30sigpwr
關機終止程序
31sigsys
無效的系統呼叫
終止程序並產生core檔案
34~64
sigrtmin ~ sigrtmax
linux的實時訊號,它們沒有固定的含義(可以由使用者自定義)
終止程序
函式的原型:
#include typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
linux 訊號的使用
linux環境下c程式設計指南 楊樹青 王歡 如要執行乙個需要花費較長時間的大型科學計算程式,在程式執行過程中,希望能隨時了解程式執行的狀態,可以使用兩種不同的方法。一是在程式的迴圈體中加入一些判斷,輸出之類的語句。這種方法將會使程式的 增加,儘管一次操作所需時間不長,但當程式要迴圈很多次時,其耗費...
Linux 程序通訊 訊號的使用
訊號概念 訊號 signal 是linux程序間通訊的一種機制,全稱為軟中斷訊號,也被稱為軟中斷。訊號本質上是在軟體層次上 對硬體中斷機制的一種模擬。訊號由核心管理 產生的方式 可以由核心自身產生,比如出現 硬體錯誤 記憶體讀取錯誤,分母為0的除法等,核心需要通知相應程序。也可以由其他程序產生並傳送...
Linux下訊號的簡單使用
1,1個main,包含2個while,不要被兩個while中的sleep所迷惑,這裡只有main 這乙個主線程 程序 在執行,程式會按照自上而下順序執行。遇到第1個while迴圈中的sleep時,本執行緒暫停執行,交給其它執行緒處理,但是因為該程序只有乙個執行緒,所以只有靜靜的sleep到指定時間 ...