信号(signal)是在程序执行期间可以报告一种情况,可以用正整数表示。raise()函数发送(或抛出)一个信号,signal()函数设置特定信息的响应。
标准定义了一个整数类型:sig_atomic_t,专门用于在处理信号时指定原子对象。也就是说,更新原子类型是不可分割的过程。
标准提供的宏列表于下表,它们表示可能的信号,可用作raise()和signal()的参数。当然,实现也可以添加更多的值。
信号宏 | |
宏 | 描述 |
SIGABRT | 异常终止,例如abort()调用发出的信号 |
SIGFPE | 错误的算术运算 |
SIGILL | 检测到无效的功能(例如,非法指令) |
SIGINT | 接收到交互注意信号(如,DOS中断) |
SIGSEGV | 非法访问内存 |
SIGTERM | 向程序发送终止请求 |
void (*f)(int)宏 | |
宏 | 描述 |
SIG_DFL | 当该宏与一个信号值一起作为signal()的参数时,表示默认处理信号 |
SIG_ERR | 如果signal()不能返回它的第2个参数,就用该宏作为它的返回值 |
SIG_IGN | 当该宏与一个信号值 一起作为signal()的参数时,表示忽略信号 |
信号函数 | |
宏 | 描述 |
void (*signal (int sig, void (*func) (int))) (int) | 如果产生信号sig,则执行func指向的函数;如果能执行则返回func,否则返回SIG_ERR |
int raise(int sig) | 向执行程序发送信号sig;如果成功发送则返回0,否则返回非0 |