使用signal函数注册信号

1.作用

信号为软件中断,提供了一种处理异步事件的方法,如接受终端用户的中断键(ctrl+c),系统通过信号机制停止一个程序。

2.信号名字

3.处理机制

若一个进程执行了除0的操作,则系统会将SIGFPE信号发送给该程序。程序有以下三种处理信号的方式。

  1. 忽略信号。大多数信号可以使用该方式,但是SIGKILL和SIGSTOP不能被忽略

  2. 按系统默认方式处理。大多数信号的默认动作是终止该进程。

  3. 捕捉信号并处理:程序提供一个自编函数作为回调,调用信号注册函数。当信号发生时候,系统自动回调该自编函数处理信号。通过该自编函数,我们能够知道什么时候发生了什么信号,并按期望的方式处理它。

 4.信号注册函数

 __sighandler_t signal (int __sig, __sighandler_t __handler)

需要两个参数,返回一个函数指针sighandler_t,而该指针指向的函数无返回值

第一个参数signo是一个整形值,用来传递想要捕获的信号。
第二个参数handler是一个函数指针,也就是自编的信号处理函数的指针。

signal(SIGSEGV, tim_mainapp_signal);

void tim_mainapp_signal(int signal)
{
	tim_log("signal=%d",signal);

	if(!get_debug())
	{
		tim_reboot();
	}else
	{
		mainapp_exit(1);
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值