qpwoeiruyt 发表于 2019-11-20 16:37:53

signal信号问题

本帖最后由 qpwoeiruyt 于 2019-11-20 09:38 编辑

大佬们 帮我修改下代码 让我触发SIGSEGV


比如说 我这个代码 一开始 输入n=5 他能做一个t 的表格然后再输入一个数字 i 他能显示t
但如果我们输入i=10 查看t 不就是 Segment fault 然后触发信号SIGSEGV然后siglongjmp 让我们再输入一次这样子






#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <string.h>
#include <stdlib.h>
#include<setjmp.h>
#include<time.h>
jmp_buf buf;

void segfault(){
       
    siglongjmp(buf,1);
}
int main(){
       
    int* tab;
        struct sigaction action;       
        action.sa_handler=segfault;
        action.sa_flags=0;
        sigaction(SIGSEGV,&action,NULL);
    int i,n,val;
       
        printf("输入长度 n: ");
        scanf("%d",&n);
        tab=(int*)malloc(n*sizeof(int));

    srand(time(NULL));
        for(i=0;i<n;i++){       
                tab=rand();
                printf("[%d]%d\n",i,tab);
    }
   
   
   
    while(1)
    {
      if (sigsetjmp(buf,1)!=0)
         {
               printf("\njump to here! ");
         }
      printf("\n\n输入想查看的位置: ");
      scanf("%d",&val);
      printf("tab[%d]=%d\n",val,tab);
    }
   
    free(tab);
    return(0);
}

qpwoeiruyt 发表于 2019-11-20 18:56:10

±±

qpwoeiruyt 发表于 2019-11-21 14:30:55

???
页: [1]
查看完整版本: signal信号问题