Linux Signal 1 基本概念

2021-04-28 20:09:43 字數 1123 閱讀 6170

1. 訊號是軟體中斷:

訊號提供了一種處理非同步事件的方法. 每個訊號都有乙個名字, 他們以sig開頭, 如sigalrm是鬧鐘訊號, 當由alarm函式設定的計時器超時後產生此訊號, 然後由sigalrm的訊號處理函式接管處理, 處理之後返**用alarm函式的應用程式中.

2. 訊號編號:

在標頭檔案中, 訊號都用巨集定義為正整數的訊號編號, 不存在編號為0的訊號, kill函式對編號為0的訊號有特殊的作用. posix.1將編號為0的訊號定義為空訊號, 如果kill中的signo引數為0, 則kill仍執行正常的錯誤檢查, 但不傳送訊號. 這常被用來通過kill的返回值確定乙個特定程序是否存在.

3. 不可忽略/捕捉的訊號:

大多數訊號都可以通過忽略進行處理, 但sigkill和sigstop這兩個訊號不能被忽略. 因為它們是向超級使用者提供使程序終止或停止的可靠方法. 另外, 如果忽略某些硬體異常產生的訊號(例如非法記憶體引用或除0), 則程序的行為是未定義的.

4. 介紹幾個常見訊號:

sigint: 當使用者按某些終端鍵時, 引發終端產生的訊號. 如ctrl+c鍵, 這將產生中斷訊號(sigint). 它將停止乙個已失去控制的程式.

sigsegv: 由硬體異常(除數為0, 無效的記憶體引用等等)產生的訊號. 這些條件通常由硬體檢測到, 並將其通知核心. 然後核心為該條件發生時正在執行的程序產生該訊號.

sigurg: 在網路連線上傳來帶外資料時產生.

sigpipe: 在管道的讀程序已終止後, 乙個程序寫此管道時產生. 當型別為sock_stream的socket已不再連線時, 程序寫到該socket也產生此訊號.

sigalrm: 程序所設定的鬧鐘時鐘超時的時候產生.

sigabrt: 程序呼叫abort函式時產生此訊號, 程序異常終止.

sigchld: 在乙個程序終止或停止時, 它將把該訊號傳送給其父程序. 按系統預設, 將忽略此訊號. 如果父程序希望被告知其子程序的這種狀態改變, 則應該捕捉此訊號. 通常是用wait系列函式捕捉, 如果不wait的話, 子程序將成為乙個殭屍程序.

sigio: 此訊號指示乙個非同步i/o事件.

sigsys: 該訊號指示乙個無效的系統呼叫.

sigtstp: 互動式停止訊號. ctrl+z, 按下時, 終端將產生此訊號, 程序被掛起.

Linux Signal 1 基本概念

1.訊號是軟體中斷 訊號提供了一種處理非同步事件的方法.每個訊號都有乙個名字,他們以sig開頭,如sigalrm是鬧鐘訊號,當由alarm函式設定的計時器超時後產生此訊號,然後由sigalrm的訊號處理函式接管處理,處理之後返 用alarm函式的應用程式中.2.訊號編號 在標頭檔案中,訊號都用巨集定...

Fabric private data基本概念

fabric private data利用sidedb來儲存私有資料,相當於在通道之上又提供了一層更細粒度的資料隱私保護機制。本文將介紹fabric private data的引入目的 基本概念與應用場景。目前在hyperledger fabric中實現資料隱私的方法是使用通道。但是官方並不孤立為了...

Fabric private data基本概念

fabric private data利用sidedb來儲存私有資料,相當於在通道之上又提供了一層更細粒度的資料隱私保護機制。本文將介紹fabric private data的引入目的 基本概念與應用場景。目前在hyperledger fabric中實現資料隱私的方法是使用通道。但是官方並不孤立為了...