Linux訊號處理整理(一)

2021-06-02 11:35:41 字數 758 閱讀 2790

在標頭檔案中,定義了linux中的訊號。實際上,訊號的定義在中,該標頭檔案包含在中。

訊號是一種軟中斷,在我們的應用程式中,很多情況都會使用訊號,去處理異常,非同步等情況。

核心在訊號來到時,做三個處理。

1.忽略該訊號;訊號sigkill,sigstop是不能被忽略的,它們提供了像超級使用者提供終止程式的方法

2.捕捉該訊號;

3.執行系統預設動作;

訊號太多,可以在書上網上,乙個個去查詢每個訊號的作用,這裡提及我們編寫大型程式時會經常使用的幾個訊號。

sigpipe,如果在寫到管道時讀程序已經終止,則產生該訊號,當型別為sock_stream的套接字不再連線時,程序寫到該套接字產生該訊號,所以我們在編寫伺服器端程式時,必須捕捉該訊號,做相應的處理,或者忽略該訊號,否則一旦客戶端失去連線,程式就掛掉了。

sigabrt,程式呼叫abort函式時推出

sighup ,終端介面接收該訊號,傳送給該終端相關的會話首程序,僅當終端的clocal標誌(沒搞過這個)沒有時,產生此訊號。而我們捕捉該訊號最主要的用途,就是通過傳送這個訊號,通知守護程序,讓程式重新讀取配置檔案。

sigint,使用者中斷,傳送到終端的前台程序組的每個程序,終止程式

sigquit,終止前台所有程序,產生core檔案

sigsegv ,段錯誤,

通常在我們的程式執行時,特別是伺服器端程式被終止時,使用者資料並沒有得到儲存,所以我們必須捕捉這些中斷程式執行的訊號,在捕捉到這些訊號時,對使用者資料做一次停機前儲存,當然如果是硬中斷,這個我就沒搞過了。

Linux 訊號處理

用sigcation函式 在標頭檔案signal.h中 來設定自己的訊號處理函式,用法參見 各種訊號參見 寫了個sigint,也就是c c鍵的處理例子 include includestruct sigaction newsigint,oldsigint void signalinthandler ...

linux 訊號處理

linux下的程式,有時候需要在接到一些終止訊號後,進行清理工作再退出。訊號2的處理函式 void signalhandler 2 int signal cleanup exit 2 int main int argc,char argv 處理訊號2 struct sigaction act 2,a...

Linux訊號處理

訊號是一種軟體中斷,程式收到訊號時,就會呼叫相應的處理函式 如果有註冊 void signal int signum,void handler int int 設定訊號處理方式 訊號處理函式原型 void foo int arg 系統定義的訊號有 signals.define sighup1 han...