1.作用
信号为软件中断,提供了一种处理异步事件的方法,如接受终端用户的中断键(ctrl+c),系统通过信号机制停止一个程序。
2.信号名字
3.处理机制
若一个进程执行了除0的操作,则系统会将SIGFPE信号发送给该程序。程序有以下三种处理信号的方式。
-
忽略信号。大多数信号可以使用该方式,但是SIGKILL和SIGSTOP不能被忽略
-
按系统默认方式处理。大多数信号的默认动作是终止该进程。
-
捕捉信号并处理:程序提供一个自编函数作为回调,调用信号注册函数。当信号发生时候,系统自动回调该自编函数处理信号。通过该自编函数,我们能够知道什么时候发生了什么信号,并按期望的方式处理它。
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);
}
}