这两个函数的作用可以类比setjmp和longjmp,只不过这两个函数用在信号处理函数中。
在信号处理函数执行的过程中,会阻塞引发该信号处理函数的信号(把该信号添加到信号屏蔽字中),如果在信号处理函数中使用longjmp则,信号屏蔽字是否恢复是未定义的。
所以新增两个函数,至于在siglongjmp后是否恢复被屏蔽的信号则需要看sigsetjmp的调用。
sigsetjmp的函数声明为:
int sigsetjmp(sigjmp_buf env, int savesigs);
若savesigs非0,则在调用siglongjmp跳转回去的时候保留信号屏蔽字。
网友评论