信号处理器为什么在处理相同信号时被阻塞

问题描述:

为了理论目的:我使用signal()将SIGINT的处理程序关联起来。当处理这个信号,即执行信号处理程序时,默认情况下,同一信号被阻止。阻塞的原因是什么?它会导致僵局吗?请澄清。信号处理器为什么在处理相同信号时被阻塞

由于信号处理程序预计不会重入。

信号处理程序通常运行速度很快,应该只调用异步安全功能,即非常有限的一组功能,请参见signal(7)

你通常不希望它在它自己内部被调用。

除非你没有正常返回信号(或者在它内部做一个siglongjmp),否则之前的信号掩码在信号处理程序完成后恢复。

但是,您可以安装不会自行阻止的信号处理程序(通过sigaction)。

由于类似的原因,在通常的处理器上,intterupt处理程序也快速运行并且禁用中断。