C语言中信号标示一种时间,它可能异步地发生,也就是并不与城市执行过程中的任何事件保持同步,如果程序中未设置该信号的处理函数,则选择缺省方式---大部分为终止程序运行。
信号头文件<signal.h>
同样可以显示引发一个信号: int raise(int sig);
指定希望采取的措施: void (* signal(int sig, void (* handler) (int) ) )(int);
去除返回值来看: signal(int sig, void (* handler) (int) ) 参数1:int 型,信号类型 参数2:返回值为void 参数为int,描述想要处理的信号类型,可以为多个或运算结合起来的。
返回值: void (* signal () )(int) 为该信号以前的处理函数
另外两个宏作为signal函数的第二个参数, SIG_DFL 恢复对该信号的缺省反应,SIG_IGN使该信号被忽略。
当信号处理函数处理完成之后,返回触发点。并且在返回之前需要重新调用signal函数重新设置信号处理函数。
volatile数据:防止以一种可能修改程序含义的方式优化程序。如
if(A1)
{
B1;
}
if(A1)
{
B2;
}
但是程序可能优化为
if(A1)
{
B1;B2;
}
但是信号处理函数可能修改A1的值