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

epoll_pwait

接口名称

epoll_pwait(int epfd, struct epoll_event *events, int maxevents, int timeout, const sigset_t *sigmask)

接口描述

在epoll文件描述符上等待I/O事件。与epoll_wait相比可以设置屏蔽的信号。

参数说明

参数说明备注
epfdepoll文件描述符-
*events文件句柄需要感知的事件events值作为出参,会覆盖数组的原数据内容,如后续需使用原数据,必须先保存到其他地方。
maxevents可以获取的最大的事件个数取值范围为[1,0xFFFFFFFF/sizeof(epoll_event)],请用户确保此参数比pstEvents数组个数要小。
timeout阻塞场景设置的超时时间间隔超时值。
  • 非阻塞模式:0 ,获取不到事件也立即返回。
  • 阻塞模式:超时等待,[1, 0x7FFFFFFF],单位为毫秒,指定等待时间,如果指定时间内获取不到事件,也立即返回。
  • 无超时等待,-1,不限制等待时间,只有获取到事件才返回。
  • *sigmask需要屏蔽信号的掩码,可以避免wait时被信号打断。允许为NULL。

    返回值

    类型:int

    • 非负数:产生事件的fd个数,表示成功

    • -1:表示失败,并设置errno以指示错误类型

    错误码

    错误码定义
    EINVAL入参events为空或者maxevents非法。
    EINVAL共线程部署模式时,sockfd的worker id和当前线程的worker id不一致,即socket跨worker线程调用。
    ENOMEM内存申请失败。
    EFAULTevent非法或不能写。
    ELIBBAD系统符号加载失败。