日期:2014-05-16  浏览次数:20716 次

这是个什么函数?
signal声明是 void(*signal(int signum, void (*handler)(int))) (int)
这是什么函数, 怎么是这中形式的?大神帮忙解答下 跪谢
------解决方案--------------------
http://blog.csdn.net/nizhigang2000/article/details/673424
理解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 *);