首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

发个贴部问一下,《Unix高级环境编程》一书中的代码解决方案

2012-04-05 
发个贴部问一下,《Unix高级环境编程》一书中的代码typedefvoidSigfunc(int)//这一句不是很懂,望高人指点一

发个贴部问一下,《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。

热点排行