开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

select

接口名称

select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout)

接口描述

一段指定时间内,侦听用户感兴趣的文件描述符的可读、可写和异常事件。

说明: 只支持轮询侦听。调用select期间,select会占用100%的CPU。

参数说明

参数 说明 备注
nfds 集合中所有文件描述符的范围,即所有文件描述符的最大值加1 最大值是1024。
*readfds 待监测读取操作的文件描述符集合 支持为NULL。包含了需要检查是否可读的描述符,输出时表示哪些描述符可读。
*writefds 待监测写入操作的文件描述符集合 支持为NULL。包含了需要检查是否可写的描述符,输出时表示哪些描述符可写。
*exceptfds 待监测异常条件的文件描述符集合 支持为NULL。包含了需要检查是否出错的描述符,输出时表示哪些描述符出错。
*timeout 一个时间结构体,用来设置超时时间 仅支持到ms级精度。为NULL时,为阻塞永久等待。

返回值

类型:int

  • 正数:就绪的文件描述符的个数,表示成功
  • 0:表示在达到超时之前,没有准备好的文件描述符
  • -1:表示失败,并设置errno以指示错误类型

错误码

错误码 描述
EINVAL 入参timeout无效;入参nfds小于0或大于FD_SETSIZE。
ENOMEM mbuf内存申请失败。
EINTR 被信号中断。
ELIBBAD 系统符号加载失败
ENOMEM 系统内存申请失败。