发个贴部问一下,《Unix高级环境编程》一书中的代码
typedef   void   Sigfunc(int);               //这一句不是很懂,望高人指点一下 
 #if   defined(SIG_IGN)   &&   !defined(SIG_ERR) 
 #define   SIG_ERR   ((Sigfunc*)-1)         //这一句也不是很懂,望高人指点一下 
 #endif
------解决方案--------------------typedef void Sigfunc(int); 
 定义一个函数指针,函数指针都是这么定义的,意思是Sigfunc是一个函数指针类型,指向void xxx(int)这样的函数。   
 #define SIG_ERR ((Sigfunc*)-1) 
 这是将-1强制转换成Sigfunc*类型。比如: 
 Sigfunc* ptr = SIG_ERR;   
 此时ptr是一个函数指针,但是并不指向真实的函数,而是指向-1,这只是用来做错误判断用就好像: 
 if(signal(SIGALRM,sig_handler)==SIG_ERR) { 
 }   
 signal需要返回原来的handler,如果出错,它也得返回一个函数指针,那就是-1。