#名稱: 信號
#參考資料: Unix高級編程
#作者 一路向北
#時間 2013-8-13 14:57
#版本 RetHat 4.1.2-48
#內核版本 2.6.18-194.
#說明: 由於用到相關的知識,所以從第十章開始寫
引言:
信號是軟件中斷,它提供了一種處理異步事件的方法,具體的表面上的操作方法是
終端用戶鍵入中斷鍵,則會通過信號機構停止一個程序。
1、S V R 4和4 . 3 + B S D均有3 1種不同的信號,都是以SIG開頭,
特別注意:
這些信號被設爲整數但是沒有0,0是要有特殊作用的,所以不用,在kill函數中會提到
kill(2)桉樹可以將信號發送給另一個進程或者進程組。但是有限制,接收信號進程和發送信號進程的所有者必須相同,或者發送信號進程的所有者必須是超級用戶
kill(1)命令將信號發送給其他進程。此程序是kill函數的界面,用來終止一個失控的後臺進程
當檢測到某種軟件條件已經發生,並將其通知有關進程時也產生信號。這裏並不是硬件條件,而是軟件條件如被0除。
信號的作用:
信號是典型的異步事件
產生信號的時間對進程而言屬於隨機出現的。
進程在測試到一個變量(eg:errno)來判斷是否發生一個信號,之後必須告訴內核,某信號已經發生了,
趕緊做下面的三件事情中的一件事情:
(1)忽略此信號 大多數的信號都可以用這種方法除了SIGKILL和SIGSTOP,請想想爲什麼?
(2)捕捉信號 爲了做到這一點,還需要內核多出點力,在該信號發生時調用一個用戶函數,可以在用戶函數中
執行對這個事件的操作。
eg:如果編寫一個命令解釋器,當用戶用鍵盤產生中斷信號時希望返回到主循環,終止系統增在爲該用戶執行的命令。
如果捕捉到SIGCHLD信號,則表示子進程已經終止。所以此信號的捕捉函數可以調用waitpid以取得該子進程的ID以及其種子狀態。
(3)執行系統默認動作,對大多數的信號系統的默認動作是終止該進程
在/usr/include中定義的各信號的名字和使用方法
English name
中文名 缺省
作用或使用方法
SIGABRT
夭折信號 終止w/core
進程調用abort函數時產生這種信號
SIGALRM
鬧鐘信號 終止
由alarm函數設置的時間已經超過後產生此信號
SIGINT
按某終端時產生 在終端上岸DELETE鍵產生的中斷信號,停止一個
已經失去控制程序的方法
SIGSEGV
硬件異常 除數爲0.無效的存儲訪問等。這些條件由硬件
檢測到並通知內核,內核產生適當信號
SIGBUS
硬件故障 終止w/core
SIGCHLD
子進程狀態改變 忽略
SIGCONT
使暫停進程繼續 繼續/忽略
SIGEMT
硬件故障 終止w/core
SIGFPE
算術異常 終止w/core
SIGHUP
連接斷開 終止
SIGILL
非法指令 終止w/core
SIGINFO
鍵盤狀態請求 忽略
SIGINT
終端中斷符 終止
SIGIO 一部I/O
終止/忽略
SIGIOT
硬件故障 終止w/core
SIGKILL
終止 終止
SIGPIPE
寫至無讀進程管道 終止
SIGPOLL
可輪詢事件(poll) 終止
SIGPROF
梗概時間超時(setitimer) 終止
SIGQUIT
終端退出符 終止w/core
SIGPWR
電源失效/再啓動 忽略
SIGSEGV
無效存儲訪問 終止w/core
SIGSTOP
停止 暫停進程
SIGSYS
無效系統調用 終止w/core
SIGTERM
終止 終止
SIGTRAR
硬件故障 終止w/core
SIGTSTP
終端掛起符 停止進程
SIGTTIN
後臺從控制tty讀 停止進程
SIGTTOU
後臺想控制tty寫 停止進程
SIGURG
緊急情況 忽略
SIGUSR1
用戶定義信號 終止
SIGUSR2
用戶定義信號 終止
SIGVTSLRM
虛擬時間鬧鐘(setitimer) 終止
SIGWINCH
終端窗口大小 忽略
SIGCPU
超過CPU限制(setrlimit) 終止w/core
SIGXFSZ
超過文件長度限制 終止w/core
終止w/core:表示在進程當前工作目錄的core文件中複製了該進程的存儲圖像
信號(未完)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
使用中遇到的sh與csh的一些區別
whistle_2005
2018-08-27 19:43:10
unix中常見的查找命令
whistle_2005
2018-08-27 19:43:10
Unix 正則表達式
jeikyzhou
2018-08-27 18:22:24
轉載:shell單引號字符' 雙引號字符" 反斜槓字符/ 反引號字符
jeikyzhou
2018-08-27 18:22:23
Unix Core 文件
jeikyzhou
2018-08-27 18:22:23
h9
paradoxjjjia
2018-08-27 17:58:11
h6
paradoxjjjia
2018-08-27 17:58:11
h7
paradoxjjjia
2018-08-27 17:58:11
h8
paradoxjjjia
2018-08-27 17:58:07
h5
paradoxjjjia
2018-08-27 17:58:07
h10
paradoxjjjia
2018-08-27 17:58:07
h1-3
paradoxjjjia
2018-08-27 17:58:07
h4
paradoxjjjia
2018-08-27 17:58:04
UNIX® Load Average Part 1: How It Works
paradoxjjjia
2018-08-27 17:58:04
文件逐行讀取並進行相關處理的Unix Shell 腳本
yijiyong100
2018-08-27 07:15:39