Epoll检测事件: - EPOLLIN - EPOLLOUT - EPOLLERR - EPOLLET
时间: 2023-04-12 07:01:33 浏览: 143
Epoll检测事件包括:EPOLLIN、EPOLLOUT、EPOLLERR和EPOLLET。其中,EPOLLIN表示可读事件,EPOLLOUT表示可写事件,EPOLLERR表示错误事件,EPOLLET表示边缘触发模式。
相关问题
epollin和epollet事件
EPOLLIN事件是指当对端有数据写入时才会触发的事件。也就是说,只有在接收到数据时才会触发EPOLLIN事件。
EPOLLET事件是指边缘触发方式,只在状态变化的时刻触发一次。对于EPOLLET事件的触发条件,有一些需要注意的地方。在写操作时,如果发送缓冲区已满且返回错误码为EAGAIN,或者对端读取了一些数据后又重新可写,那么就会触发EPOLLOUT事件。而对于EPOLLIN事件,只有在对端有数据写入时才会触发,因此需要不断读取所有数据直到读完EAGAIN为止。否则剩下的数据只能在下次对端有写入时才能一起取出来。
总之,EPOLLIN事件是指接收到数据时触发的事件,而EPOLLET事件是指边缘触发方式,在状态变化时触发一次的事件。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [简述Linux Epoll ET模式EPOLLOUT和EPOLLIN触发时刻](https://blog.csdn.net/psq1508690245/article/details/118052554)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
epoll_ctl参数详解
`epoll_ctl` 函数用于向 epoll 实例中添加、修改或删除感兴趣的事件,其函数原型如下:
```c
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
```
其中,参数含义如下:
- `epfd`:epoll 实例的文件描述符,即 `epoll_create` 函数返回的文件描述符。
- `op`:要进行的操作类型,可以是以下三种操作之一:
- `EPOLL_CTL_ADD`:向 epoll 实例中添加感兴趣的事件。
- `EPOLL_CTL_MOD`:修改已添加的事件的属性。
- `EPOLL_CTL_DEL`:删除已添加的事件。
- `fd`:需要添加、修改或删除事件的文件描述符。
- `event`:指向 `epoll_event` 结构体的指针,用于表示感兴趣的事件。
`epoll_event` 结构体定义如下:
```c
struct epoll_event {
__uint32_t events; // 表示感兴趣的事件
epoll_data_t data; // 用户数据
};
typedef union epoll_data {
void *ptr;
int fd;
__uint32_t u32;
__uint64_t u64;
} epoll_data_t;
```
其中,`events` 可以是以下事件的组合:
- `EPOLLIN`:表示对应的文件描述符可读。
- `EPOLLOUT`:表示对应的文件描述符可写。
- `EPOLLRDHUP`:表示对端关闭连接或者半关闭连接。
- `EPOLLPRI`:表示对应的文件描述符有紧急数据可读。
- `EPOLLERR`:表示对应的文件描述符发生错误。
- `EPOLLHUP`:表示对应的文件描述符被挂起。
- `EPOLLET`:表示事件采用边缘触发模式。
- `EPOLLONESHOT`:表示事件采用一次性触发模式。
`data` 字段可以存储用户数据,它的具体含义可以由用户自定义。在事件触发时,`data` 字段会被原封不动地返回给用户。在 `epoll_ctl` 函数中,`data` 字段通常会被用于存储文件描述符或其他与事件相关的信息。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)