理解signal函式

2021-04-06 20:31:44 字數 659 閱讀 6855

關鍵字:unix , linux, signal, 函式指標,指標函式

在unix/linux中signal函式是比較複雜的乙個,其定義原型如下:

void (*signal(int signo,void (*func)(int))) (int)

這個函式中,最外層的函式體

void (* *** )(int)表明是乙個指標,指向乙個函式***的指標,***所代表的函式需要乙個int型的引數,返回void

signal(int signo, void(*func)(int))是signal函式的主體.

需要兩個引數int型的signo以及乙個指向函式的函式.

void (*func)(int).

正是由於其複雜性,在[plauger 1992]用typedef來對其進行簡化

typedef void sigfuc(int);//這裡可以看成乙個返回值 .

再對signal函式進行簡化就是這樣的了

sigfunc *signal(int,sigfuc *);

在signal.h標頭檔案中還有以下幾個定義

#define sig_err (void (*)())-1

#define sig_dfl (void (*)())0

#define sig_ign (void (*)())1

如何理解signal函式宣告

signal函式用起來其實很簡單,但是回頭看看他的宣告,相信會有很多人表示費解。自己也在這個問題中糾結了好幾年了,今天終於弄明白,很是興奮,一起分享一下。先看函式原型 void signal int signo,void func int int 對於看慣了類似unsigned int sleep ...

signal函式宣告的理解

先看函式原型 void signal int signo,void func int int 對於看慣了類似unsigned int sleep unsigned int seconds 這種宣告的人們來說,signal的宣告到底是個啥啊?signal是個函式,後面應該是形參啊,但為什麼形參後面又來...

理解函式宣告 signal函式的宣告

分兩步分析 假定變數fp是乙個函式指標,呼叫方法如下 fp 因為fp是乙個函式指標,那麼 fp就是該指標指向的函式,所以 fp 就是呼叫該函式的方式。ansi c標準允許程式設計師將上式簡寫為fp 的運算子高於 2.使用具體的函式指標替換fp,此處將0做型別強制轉換,轉換為函式指標,替換fp。對乙個...