---
title: epoll_ctl
description: "**epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)**"
url: https://www.hikunpeng.com/document/detail/zh/knet/api/docs/zh/api/posix_apis/epoll_ctl.md
sourcePath: /source/zh/knet/api/docs/zh/api/posix_apis/epoll_ctl.md
indexId: 53941e81cc2c7900056cfd785bfb9bc62ba102daaf0a5237bf7e282c184703cd55
---
# epoll_ctl

## 接口名称

**epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)**

## 接口描述

根据选项给epoll文件描述符配置对应的事件信息。

## 参数说明

|参数|说明|备注|
|--|--|--|
|epfd|epoll文件描述符|-|
|op|添加选项方式|支持EPOLL_CTL_ADD、EPOLL_CTL_MOD、EPOLL_CTL_DEL。|
|fd|需要添加到epoll的文件句柄|不支持将一个fd放入不同的epoll中同时监测。|
|*event|文件句柄需要感知的事件|支持EPOLLIN、EPOLLOUT、EPOLLERR、EPOLLHUP、EPOLLRDHUP、EPOLLONESHOT。|

## 返回值

类型：int

- 0：表示成功
- -1：表示失败，并设置errno以指示错误类型

## 错误码

|错误码|定义|
|--|--|
|EINVAL|入参event无效。|
|EINVAL|共线程部署模式时，sockfd的worker id和当前线程的worker id不一致，即socket跨worker线程调用。|
|EEXIST|入参op为EPOLL_CTL_ADD时，该fd已经在epoll侦听列表中。|
|EINVAL|入参epfd不是epoll描述符，或者入参fd与epfd相同，或者入参op不在支持范围内。|
|ENOENT|op是EPOLL_CTL_MOD或者EPOLL_CTL_DEL时，fd没有注册epoll。|
|ENOMEM|内存申请失败。|
|EFAULT|入参op为EPOLL_CTL_ADD、EPOLL_CTL_MOD时，入参event为空指针。|
|ELIBBAD|系统符号加载失败。|
