当发生异常或发生信号时,将调用信号处理函数。 处理程序是使用 signal() 函数定义的。 您在 sig 参数上指定的值与 funct 参数上引用的函数相关联。
在 C 程序中调用信号处理程序时,其相应的信号操作设置为 SIG_DFL。 如果要再次处理同一信号,那么必须重置信号操作。 如果未执行此操作,那么将对后续异常执行缺省操作。 可通过调用 signal()从处理程序内部或外部重置信号的处理。
示例:
下图显示了用于重置信号处理程序的源代码。图 1。 重置信号处理程序
signal ( SIGINT, &myhandler );
raise ( SIGINT ); /* signal is handled by myhandler. */
...
raise ( SIGINT ); /* signal is handled by SIG_DFL. */
...
signal ( SIGINT, &myhandler );/* reset signal handler to myhandler. */
raise ( SIGINT ); /* signal is handled by myhandler. */