比如void (*signal (int sig, void (*func)(int)))(int)
函数指针=指向函数的指针
void (*func)(int)是定义了一个参数为intf返回值void的函数指针记为A;
void (* signal (int sig, A))(int)定义了一个signal函数,参数为int和A, 返回值为一个形如void (* p)(int)的函数指针
#include <iostream>
#include <csignal>
#include <unistd.h>
#include<cstdlib>
using namespace std;
void signalHandler( int signum )
{
cout << "Interrupt signal (" << signum << ") received.\n";
exit(signum);
}
void rfun(int y){
cout<<"out"<<y<<endl;
}
void infun(int x){
cout<<"in"<<x<<endl;
}
void (*handler (int sig, void (*func)(int)))(int){
(*func)(sig+1);
cout<<"handler"<<sig<<endl;
return rfun;
}
int main ()
{
// 注册信号 SIGINT 和信号处理程序
void (*p)(int);
p= signal(SIGINT, signalHandler);
p=handler(10, infun);
(*p)(100);
while(1){
cout << "Going to sleep...." << endl;
sleep(1);
}
return 0;
}