setjmp与longjmp
后缀jmp指的就是jump,关看名字就能猜到这哥俩是干啥的了。使用他们俩就可以让程序控制流转移,进而实现对异常的处理。
异常处理的结构可以划分为以下三个阶段:
准备阶段:在内核栈保存通用寄存器内容
处理阶段:保存硬件出错码和异常类型号,然后向当前进程发送信号
恢复阶段:恢复保存在内核栈中的各个寄存器内容,返回当前进程的断电处继续执行
过程有点类似递归,只有文字你可能看的有点云里雾里,我们结合一个小例子来看看
#include
#include
static jmp_buf buf;
void second(v
1