2022 0603
简介
#简介
除法运算除数为0时恢复堆栈处理
#编译
gcc div.c
#运行
./a.out
输入 8 0 会恢复堆栈
代码
//div.c
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<sys/signal.h>
#include<setjmp.h>
#define N 2
static jmp_buf env;
//除法错误信号函数
static void div_error(int sig);
int main() {
signal(SIGFPE, div_error);
for(int i = 0; i < N; i++) {
sigsetjmp(env,1);
printf("请输入x,y\n");
int x, y;
scanf("%d %d", &x, &y);
printf("正在计算x/y ...\n");
sleep(2);
int ret = x / y;
printf("计算结果为:%d\n", ret);
}
return 0;
}
static void div_error(int sig)
{
printf("除数为0 打断\n");
siglongjmp(env, 1);
}
浙公网安备 33010602011771号