signal訊號處理基礎篇

2021-08-16 02:11:48 字數 405 閱讀 5911

signal函式的原型如下void ( *signal( int ,void (*fun)(int) ) ) (int),由此可見該函式的返回值是乙個指向   void  fun(int)型別的指標,即返回上一次和該訊號繫結的 訊號處理函式位址。

程序對訊號的處理有三種方式:(1)忽略此訊號,如signal(sigint,sig_ign);  (2)捕捉該訊號 ,如signal(sigint,fun); (3)對訊號不做處理,執行系統預設動作。

需要注意的是:a乙個原先有捕捉的訊號,當其呼叫exec生成乙個新的程式後,在新的程式裡就沒有對該訊號進行捕捉。因為原來的訊號處理函式位址在 exec後產生的新程式中已經無意義。 b、當乙個程序呼叫fork時,子程序繼承父程序的訊號處理方式,因為子程序複製了父程序的記憶體映像,父程序的訊號處理函式位址在子程序中是有效的。

Signal訊號處理

在goahead的linux模組main.c 檔案中,main函式中出現了以下三個語句 signal sigpipe,sig ign signal sigint,siginthandler signal sigterm,siginthandler 這三條語句與網路訊號有關。在這裡做咯記錄。1.訊號概...

訊號處理 signal和sigaction的區別

下面所指的signal都是指以前的older signal函式,現在大多系統都用sigaction重新實現了signal函式 1 signal在呼叫handler之前先把訊號的handler指標恢復 sigaction呼叫之後不會恢復handler指標,直到再次呼叫sigaction修改handle...

signal訊號處理機制

可以用函式signal註冊乙個訊號捕捉函式。原型為 include typedef void sighandler t int sighandler t signal int signum,sighandler t handler signal的第1個引數signum表示要捕捉的訊號,第2個引數是個...