使用信号处理程序的正确方法
作者:互联网
使用信号处理程序的正确方法是什么?
我从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
}
解决方法:
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