理解signal函數

關鍵字:Unix , Linux, signal, 函數指針,指針函數
在Unix/Linux中signal函數是比較複雜的一個,其定義原型如下:
void (*signal(int signo,void (*func)(int))) (int)
這個函數中,最外層的函數體
void (* XXX )(int)表明是一個指針,指向一個函數XXX的指針,XXX所代表的函數需要一個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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章