信号即异常,或者理解为中断,一个进程接收到一个信号,如果没有处理机制,就会按照默认的处理方式进行处理,而默认的处理方式通常是终止当前进程或忽略该信号。当然,程序也可以编写相应的处理信号的函数,一旦接收到相应的信号,就把控制权交给该处理函数
数据类型
sig_atomic_t
是一个中定义的程序以原子方式访问的整数类型,一个信号在程序访问这种类型的数据对象的过程中,绝不会挂起程序的执行,一个信号处理程序能和程序的其他部分共享的仅仅有声明为volatile sig_atomic_t
类型的数据对象
宏
SIG_DFL
,SIG_ERR
, SIG_IGM
展开为不同的常量表达式,这些表达式的类型和signal()第二个参数和返回值类型兼容,并且他们的值余所有声明的函数的地址都不想等。定义的信号类型的宏有:SIGABRT
异常终止信号SIGFPE
错误的算术操作SIGILL
检测到无效的函数映像SIGINT
收到一个交互的提示信号SIGSEGV
对存储器的无效访问SIGTERM
送到程序中的终止请求
raise()
#include<signal.h>
int raise(int sig); //报告一个信号
signal()
#include<signal.h>
void (*signal (int sig, void (* func) (int))(int); //指定一种信号的处理方法