linux signal函数理解

#include <signal.h>
typedef void ( *sighandler_t )(int);
sighandler_t signal( int signum, sighandler_t handler );

void ( *signal(int signum, void (*handler)(int)) ) (int);

 

 
在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
 
参考http://blog.csdn.net/nizhigang2000/article/details/673424
 
参考2

 


 

posted on 2017-02-07 20:13  merlindu  阅读(1382)  评论(0编辑  收藏  举报

导航