当前位置: 技术问答>linux和unix
求助:linux信号处理的默认函数宏定义怎么理解呢?
来源: 互联网 发布时间:2017-03-13
本文导语: linux信号处理的默认函数宏定义如下 /* * A pointer to a signal handler function. A signal handler takes a * single int, which is the signal it handles. */ typedef void (*__p_sig_fn_t)(int); /* * These are special values of signal handl...
linux信号处理的默认函数宏定义如下
这个0、1什么的怎么理解呢?比如我使用:
其中SIG_IGN应该设置的是函数地址吧?宏展开之后岂不变成
难道函数地址是1?
/*
* A pointer to a signal handler function. A signal handler takes a
* single int, which is the signal it handles.
*/
typedef void (*__p_sig_fn_t)(int);
/*
* These are special values of signal handler pointers which are
* used to send a signal to the default handler (SIG_DFL), ignore
* the signal (SIG_IGN), indicate an error return (SIG_ERR),
* get an error (SIG_SGE), or acknowledge (SIG_ACK).
*/
#define SIG_DFL ((__p_sig_fn_t) 0)
#define SIG_IGN ((__p_sig_fn_t) 1)
#define SIG_ERR ((__p_sig_fn_t) -1)
#define SIG_SGE ((__p_sig_fn_t) 3)
#define SIG_ACK ((__p_sig_fn_t) 4)
这个0、1什么的怎么理解呢?比如我使用:
Signal(SIGHUP, SIG_IGN);
其中SIG_IGN应该设置的是函数地址吧?宏展开之后岂不变成
Signal(SIGHUP, ((__p_sig_fn_t) 1));
难道函数地址是1?
|
就是说SIG_ING仅仅是一个标示,实际上在0x1那个地方并不是什么函数的入口地址。
就是说是不能这么调用的SIG_ING(int).
那系统对于SIG_ING的处理又是怎么实现的呢,既然它不像是用户自定义的信号处理函数那样执行。
就是说是不能这么调用的SIG_ING(int).
那系统对于SIG_ING的处理又是怎么实现的呢,既然它不像是用户自定义的信号处理函数那样执行。