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

ppoll

接口名称

ppoll(struct pollfd *fds, nfds_t nfds, const struct timespec *timeout_ts, const sigset_t *sigmask)

接口描述

等待在异步描述符上事件触发。

参数说明

参数说明备注
*fds侦听的文件描述符指针-
nfds文件描述符个数-
*timeout_ts阻塞等待文件描述符的超时时间间隔ms级精度。
*sigmask需要执行信号屏蔽操作-

返回值

类型:int

  • 正数:有事件触发或者错误上报的socket描述符个数,表示成功
  • 0:调用超时没有文件描述符就绪
  • -1:表示失败,并设置errno以指示错误类型

错误码

错误码描述
EINVAL入参timeout_ts无效。
EINVAL入参nfds无效。
EINVAL共线程部署模式时,sockfd的worker id和当前线程的worker id不一致,即socket跨worker线程调用。
EFAULT入参fds为空。
EMFILE进程的file数量超过max_tcpcb。
ENFILE系统的file数量超过上限。
ENOSPC尝试在主机上注册(EPOLL_CTL_ADD)新文件描述符时遇到/proc/sys/fs/epoll/max_user_watches施加的限制。
EEXIST入参fds中的fd已经被注册(EPOLL_CTL_ADD)。
EINVAL入参fds中的fd与内部创建的fd相同。
ENOMEMmbuf内存申请失败。
ENOMEM系统内存申请失败。
EINTR被信号中断。
ELIBBAD系统符号加载失败。
EPERM信号退出流程中,不允许调用该函数接口。