#include<stdio.h>
#include<signal.h>
#include<setjmp.h>
jmp_buf buf;
void handle(int s)
{
if(i==SIGINT)printf("信号还没有到达\n");
longjmp(buf,2);
}
void main()
{
signal(SIGINT,handle);
int i=setjmp(buf);
if(i!=0){printf("the signal's return value:%d\n",i);}
else {printf("I will go handle\n");}
//在这里循环等待,直至输入Ctrl+c.
loop:
goto loop;
}
请问为什么输入了ctrl+c后,结果是read错误呢?这个signal到底是怎么回事情呢?特别是第一个函数。什么时候该用什么呢?
signal(int, void (__cdecl *)(int))函数的原形是这个。signal(SIGINT,handle);书上这样写算怎么回事情呢?