由于在信号处理期间自动屏蔽了正在被处理的信号,而使用setjmp/longjmp跳出信号处理程序时又不会自动将
信号屏蔽码修改会原来的屏蔽码,从而引起该信号被永久屏蔽。
可以使用sigsetjmp/siglongjmp来解决这一问题。
相关函数:longjmp, siglongjmp, setjmp
表头文件:#include <setjmp.h>
函数定义:int sigsetjmp(sigjmp_buf env, int savesigs)
函数说明:sigsetjmp()会保存目前堆栈环境,然后将目前的地址作一个记号,
而在程序其他地方调用siglongjmp()时便会直接跳到这个记号位置,然后还原堆栈,继续程序