signal原型:返回值是函数指针的函数
回顾下《指针函数和函数指针深入剖析》
函数指针:是一个指向函数的指针;
指针函数:是一个返回值是指针的函数;
返回值是函数指针的函数:是一个指针函数,它的返回值是一个指向函数的指针;
如何声明?
void (*func(char, int))(int);
声明一个函数,
函数名:func;
参数:一个char和一个int;
返回值:一个函数指针,该指针可指向一个"参数为int,返回值为void的"函数;
看起来很烦琐吧?那么,我们,可以让它简单点。
回顾下《typedef 详解》
typedef void (*pFunc)(int); // 定义一种数据类型,叫pFunc。
// pFunc ,是一个函数指针,指向返回值是void,参数是 int的函数;
pFunc func(char, int); // 返回值是pFunc 指针,参数是(char, int) 的函数
signal函数
signal函数的原型为:
void (*signal(int signo, void (*func)(int)))(int);
signal函数有两个参数,一个是 int, 另一个是"指向返回值为void,参数为int的"函数指针;
signal函数返回值,是一个是"指向返回值为void,参数为int的"函数指针;
看起来也很繁琐吧?我们也让它看起来简单一点:
typedef void (*sighandler_t)(int); // 定义一个"指向返回值为void,参数为int的"函数指针类型sighandler_t
sighandler_t signal(int signum, sighandler_t handler); // signal函数的参数为一个int,一个sighandler_t,返回值是 sighandler_t
在linux下 man 2 signal 看下,喔,signal 函数,不就是这样么?