首先说一下对于这个问题外的一些话:
我觉得我们应该有种质疑的态度,因为接下来的这个问题就和我们平常所想的不一样。
介绍一下问题:
曾经一直听说信号可以打断一个正在阻塞的进程,但是今天我试了一下关于信号打断阻塞在终端的问题,
代码:
int main(int argc, char** atgv) { signal(SIGALRM,fun);
alarm();
char buf[];
read(,buf,);
/* fd_set readfd;
24 FD_ZERO(&readfd);
25 FD_SET(0,&readfd);
26 int rec=select(1,&readfd,NULL,NULL,NULL);
27 printf("%d\n",rec);
28 if(errno==EINTR)
29 {
30 printf("我被打断了\n");
31
32
33 }*/ // printf("%d\n",a);
return ;
}
结果是:用alarm信号打断read时候信号处理函数被执行了可是我们的read仍在阻塞这个问题我目前深受质疑,也不能解答,但是我通过select来关注0文件描述符他会被打断的应执行打印我被打断
我的设想:可能是系统版本的原因,希望高人可以指点。