初涉信號

信號(signal)是通知進程已發生某種情況的一種技術。

進程對於處理信號有三種選擇:

1、忽略該信號。有些信號表示硬件異常,例如,除以0或訪問進程地址空間以外的單元等,因爲這些異常產生的後果不確定,所以不推薦使用這種方法。

2、按系統默認方式處理。例如,對於除以0的情況,系統默認方式是終止該進程。

3、提供一個函數,信號發生時則調用該函數,這被稱爲捕捉該信號。使用這種方式,我們只要提供自編的函數就將能知道什麼時候產生了信號,並按所希望的方式處理它。


信號則以SIG開頭。

很多情況都會產生信號

1、例如進程除以0的時候,將會發送SIGFPE(浮點異常)信號給進程。

2、終端鍵盤有兩種方式可以產生信號:中斷鍵(Ctrl+C)和退出鍵(Ctrl+\)。

3、調用kill函數,但是這種方式有一定限制,當向一個進程發送信號時,我們必須是該進程的所有者或者是超級用戶。

4、使用kill命令,例如發送一個SIGUSR1信號給進程,可以使用kill -USR1 pid該條指令達到目的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章