C语言 信号处理机制

来源:互联网 发布:js校验非负正整数 编辑:程序博客网 时间:2024/06/06 02:13


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的值

0 0