C语言关于signal()函数

【摘要】 函数原型
void(* signal(int sig,void(* func)(int)))(int);
1
指定使用sig指定的信号编号处理信号的方法。 参数func指定程序可以处理信号的三种方式之一:

默认处理(SIG_DFL):信号由该特定信号的默认动作处理。 忽略信号(SIG_IGN):忽略信号,即使没有意义,代码执行仍将继续。 函数处理程序:定义一…

函数原型

void(* signal(int sig,void(* func)(int)))(int;

  
 

指定使用sig指定的信号编号处理信号的方法。 参数func指定程序可以处理信号的三种方式之一:

默认处理(SIG_DFL):信号由该特定信号的默认动作处理。
忽略信号(SIG_IGN):忽略信号,即使没有意义,代码执行仍将继续。
函数处理程序:定义一个特定的函数来处理信号。

常用的 sig 参数

在这里插入图片描述

常用的FUNC()参数

在这里插入图片描述

例子

signal(SIGSEGV, SIG_IGN);

程序定义了一个信号量,当出现这个信号量(非法内存访问)的时候,会执行SIG_IGN

即当我们非法内存访问的时候,会忽略此信号

2. 有时候Func这个参数 也可以是我们自定义的参数

signal(11, sigsegv_handler);

这里的11也代指 SIGSEGV
在这里插入图片描述
sigsegv_handler函数我们定义为:
在这里插入图片描述

程序定义了一个信号量,当出现这个信号量(非法内存访问)的时候,会执行sigsegv_handler函数

即当我们非法内存访问的时候,会将我们的flag通过标准错误打印出来(fflush(stderr))

文章来源: blog.csdn.net,作者:雷格西雷狗子,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_45556441/article/details/116279144

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享