关于信号打断正在读取终端的read与select来监视0文件描述符的问题

首先说一下对于这个问题外的一些话:

                我觉得我们应该有种质疑的态度,因为接下来的这个问题就和我们平常所想的不一样。

介绍一下问题:

      曾经一直听说信号可以打断一个正在阻塞的进程,但是今天我试了一下关于信号打断阻塞在终端的问题,

代码:

  

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文件描述符他会被打断的应执行打印我被打断

我的设想:可能是系统版本的原因,希望高人可以指点。

上一篇:Python3实现生成验证码图片


下一篇:golang切片slice