天天看點

linux 信号_linux的信号處理

linux 信号_linux的信号處理

linux利用信号與運作在系統中的程序進行通信。可以通過對腳本進行程式設計,使其在收到特定信号時執行某些指令,進而控制shell腳本的操作。

linux系統信号有30多個,下表中列出來最常見的幾個linux系統信号

信号 描述
1 SIGHUP 挂起程序
2 SIGINT 終止程序
3 SIGQUIT 停止程序
9 SIGKILL 無條件終止程序
15 SIGTERM 盡可能的終止程序
17 SIGSTOP 無條件的停止程序,但不是終止程序
18 SIGSTP 停止或暫停程序,但不終止程序
19 SIGCONT 繼續運作停止的程序

生成信号

bash shell允許用鍵盤上的組合鍵生成兩種基本的linux信号。這種特性在需要停止或暫停失控程式時非常友善。

1.中斷程序

Ctrl+C組合鍵會生成SIGINT信号,并将其發送給目前在shell中運作的所有程序。

示範代碼如下:

linux 信号_linux的信号處理

2.暫停程序

Ctrl+Z組合鍵會生成一個SIGTSTP信号,停止shell中運作的任何程式,停止程序和終止程序不同,停止程序會讓程式繼續保留在記憶體中,并能從上次停止的位置繼續運作。

示範代碼如下:

linux 信号_linux的信号處理

方括号中的[1]是shell配置設定的作業号,shell将運作的每一個程序稱為作業,并為每一個作業配置設定唯一的作業号。它會為第一個作業配置設定作業号1,第二個作業配置設定作業号2,以此類推。

可以通過ps -l指令檢視已經停止的作業,在S列中,ps指令将已經停止的作業的狀态顯示為T。

如果在已經有停止作業的狀态下,仍舊想退出shell,可以使用kill指令來發送一個SIGKILL信号來終止它。

示範代碼如下:

linux 信号_linux的信号處理

繼續閱讀