zoukankan      html  css  js  c++  java
  • 关于信号打断正在读取终端的read与select来监视0文件描述符的问题

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

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

    介绍一下问题:

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

    代码:

      

    int main(int argc, char** atgv) {
     18    
     19     signal(SIGALRM,fun);
     20     alarm(2);
     21     char buf[1024];
     22     read(0,buf,100);
     23    /* fd_set readfd;
     24     FD_ZERO(&readfd);
     25     FD_SET(0,&readfd);
     26     int rec=select(1,&readfd,NULL,NULL,NULL);
     27     printf("%d
    ",rec);
     28     if(errno==EINTR)
     29     {
     30         printf("我被打断了
    ");
     31 
     32 
     33     }*/
     34 
     35     // printf("%d
    ",a);
     36     return 0;
     37 }

    结果是:用alarm信号打断read时候信号处理函数被执行了可是我们的read仍在阻塞这个问题我目前深受质疑,也不能解答,但是我通过select来关注0文件描述符他会被打断的应执行打印我被打断

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

  • 相关阅读:
    Python反射函数
    类之特性
    ThinkPHP框架基础知识一
    smarty变量调节器与函数
    smarty模板及其应用
    php……流程
    php......权限管理
    php......文件上传
    php......注册审核
    php......留言板
  • 原文地址:https://www.cnblogs.com/jzlzn/p/10449073.html
Copyright © 2011-2022 走看看