+ -
当前位置:首页 → 问答吧 → select函数返回-1,打印errno值为0,为什么?

select函数返回-1,打印errno值为0,为什么?

时间:2010-08-11

来源:互联网

select失败的原因是什么呢?

作者: anyc   发布时间: 2010-08-11

有没有可能errno值被冲掉了?

作者: lenky0401   发布时间: 2010-08-11

本帖最后由 anyc 于 2010-08-11 13:13 编辑


QUOTE:
有没有可能errno值被冲掉了?
lenky0401 发表于 2010-08-11 12:38

  1. for(;;)
  2. {
  3.     ...;//
  4.     switch (select(sockfd+1, NULL, &fds, NULL, &timeout))
  5.     {
  6.     case -1:
  7.         info(0, "select error.[%d]", errno);
  8.         continue;
  9.     case 0:
  10.         continue;
  11.     default:
  12.         ...;//写socket
  13.         continue;
  14.     }
  15. }
复制代码
程序大概这样的,有问题吗?

作者: anyc   发布时间: 2010-08-11

info

是printf?

info(0, "select error.[%d]\n", errno);

作者: linuxlixk   发布时间: 2010-08-11



QUOTE:
info

是printf?

info(0, "select error.[%d]\n", errno);
linuxlixk 发表于 2010-08-11 13:24




    对,封装的库

作者: anyc   发布时间: 2010-08-11

回复 anyc


    和switch有关吗?试试,暂且去掉switch

    还有,你是多线程吗?

作者: linuxlixk   发布时间: 2010-08-11

回复 linuxlixk


    info是记录日志的,我试了下把switch换成if-else也一样的。
是多线程,整个这个部分是单独一个线程跑的,但现在只创建了这一个线程

作者: anyc   发布时间: 2010-08-11