Ads 468x60px

##EasyReadMore##

18 7月, 2016

Linux 信號 signal 處理機制


 信號機制是進程之間相互傳遞消息的一種方法,信號全稱為軟中斷信號,也有人稱作軟中斷。
 注意,信號只是用來通知某進程發生了什麼事件,並不給該進程傳遞任何資料

 
說明
01
SIGHUP
掛起(hangup
02
SIGINT
中斷,當使用者從鍵盤按ctrl+c
03
SIGQUIT
退出,當使用者從鍵盤按quit鍵時
04
SIGILL
非法指令
05
SIGTRAP
跟蹤陷阱(trace trap),啟動進程,跟蹤代碼的執行
06
SIGIOT
IOT指令
07
SIGEMT
EMT指令
08
SIGFPE
浮點運算溢出
09
SIGKILL
殺死、終止進程
10
SIGBUS
匯流排錯誤
11
SIGSEGV
段違例(segmentation? violation),進程試圖去訪問其虛位址空間以外的位置
12
SIGSYS
系統調用中參數錯,如系統調用號非法
13
SIGPIPE
向某個非讀管道中寫入資料
14
SIGALRM
鬧鐘。當某進程希望在某時間後接收信號時發此信號
15
SIGTERM
軟體終止(software? termination
16
SIGUSR1
使用者自訂信號1
17
SIGUSR2
使用者自訂信號2
18
SIGCLD
某個子進程死
19
SIGPWR
電源故障


signal 系統調用
        系統調用signal用來設定某個信號的處理方法。該調用聲明的格式如下:
        void (*signal(int signum, void (*handler)(int)))(int);
        在使用該調用的進程中加入以下頭檔:
        #include <signal.h>
        上述聲明格式比較複雜,如果不清楚如何使用,也可以通過下面這種類型定義的格式來使用(POSIX的定義):
        typedef void (*sighandler_t)(int);
        sighandler_t signal(int signum, sighandler_t handler);
        但這種格式在不同的系統中有不同的類型定義,所以要使用這種格式,最好還是參考一下連線手冊。
        在調用中,參數signum指出要設置處理方法的信號。第二個參數handler是一個處理函數,或者是
        SIG_IGN:忽略參數signum所指的信號。
        SIG_DFL:恢復參數signum所指信號的處理方法為預設值。
        傳遞給信號處理常式的整數參數是信號值,這樣可以使得一個信號處理常式處理多個信號。系統調用signal返回值是指定信號signum前一次的處理常式或者錯誤時返回錯誤代碼

老陳獨白: Linux 信號signal處理機制 - http://goo.gl/oWX3Uv


0 意見:

張貼留言

 
Blogger Templates