C Singal
C Singal
简介
signal.h 头文件定义了一个变量类型 sig_atomic_t
、两个函数调用和一些宏来处理程序执行期间报告的不同信号。
库变量
sig_atomic_t
这是int
类型,在信号处理程序中作为变量使用,它是一个对象的整数类型,该对象可以作为一个原子实体访问,即使存在异步信号时,该对象可以作为一个原子实体访问。
库宏
SIG_DFL
: 默认的信号处理程序SIG_ERR
: 表示一个信号错误SIG_IGN
: 忽视信号
信号码:
SIGABRT
: 程序异常终止SIGFPE
: 算术运算出错,如除数为0或溢出GISILL
: 非法函数映像,如非法指令SIGINT
: 中断信号,如 ctrl-CSIGSEGV
: 非法访问存储器,如访问不存在的内存单元SIGTERM
: 发送给本程序的终止请求信号
库函数
signal
- 描述
C库函数 void (*signal(int sig, void (*func)(int)))(int)
设置一个函数来处理信号,即带有 sig
参数的信号处理程序
- 声明
1
void (*signal(int sig, void (*func)(int)))(int)
参数
sig: 在信号处理程序中作为变量使用的信号码
宏 | — |
SIGABRT | (Signal Abort) 程序异常终止。 |
SIGFPE | (Signal Floating-Point Exception) 算术运算出错,如除数为 0 或溢出(不一定是浮点运算)。 |
SIGILL | (Signal Illegal Instruction) 非法函数映象, 如非法指令,通常是由于代码中的某个变体或者尝试执行数据导致的。 |
SIGINT | (Signal Interrupt) 中断信号,如 ctrl-C,通常由用户生成。 |
SIGSEGV | (Signal Segmentation Violation) 非法访问存储器,如访问不存在的内存单元。 |
SIGTERM | (Signal Terminate) 发送给本程序的终止请求信号。 |
- func: 一个指向函数的指针,它可以是一个由程序定义的函数,也可以是下面预定义函数之一:
SIG_DFL | 默认的信号处理程序 |
SIG_IGN | 忽视信号 |
- 返回值
该函数返回信号处理程序之前的值,当发生错误时返回 SIG_ERR
。
raise
- 描述
C 库函数 int raise(int sig)
会促使生成信号 sig
。sig
参数与 SIG 宏兼容。
- 声明
1
int raise(int sig)
参数
sig: 在信号处理程序中作为变量使用的信号码
宏 | — |
SIGABRT | (Signal Abort) 程序异常终止。 |
SIGFPE | (Signal Floating-Point Exception) 算术运算出错,如除数为 0 或溢出(不一定是浮点运算)。 |
SIGILL | (Signal Illegal Instruction) 非法函数映象, 如非法指令,通常是由于代码中的某个变体或者尝试执行数据导致的。 |
SIGINT | (Signal Interrupt) 中断信号,如 ctrl-C,通常由用户生成。 |
SIGSEGV | (Signal Segmentation Violation) 非法访问存储器,如访问不存在的内存单元。 |
SIGTERM | (Signal Terminate) 发送给本程序的终止请求信号。 |
- 返回值
如果成功该函数返回零,否则返回非零。
本文由作者按照 CC BY 4.0 进行授权