编程语言
首页 > 编程语言> > 使用信号处理程序的正确方法

使用信号处理程序的正确方法

作者:互联网

使用信号处理程序的正确方法是什么?

我从question处看到了下面的代码,想知道为什么还要放置信号(SIGSEGV,sig_func); sig_func里面?当进程接收到SIGSEGV信号时,这是否会产生无限循环?

void sig_func(int sig)
{
  write(1, "Caught signal 11\n", 17);
  signal(SIGSEGV,sig_func);
}

int main()
{


 signal(SIGSEGV,sig_func); //Install the signal handler

 //Do work here
}

解决方法:

signal manual说:

Finally, if the handler is set to a function sighandler then first either the handler is reset to SIG_DFL or an implementation-dependent blocking of the signal is performed and next sighandler is called with argument signum.

对信号的重复调用用于将自定义处理程序(可能)重置为SIG_DFL之后,重新安装该自定义处理程序.

标签:signal-handling,c-3,linux,signals
来源: https://codeday.me/bug/20191101/1986168.html