epoll函数

函数epoll

1. 函数epoll_creat: 该函数生成一个epoll专用的文件描述符

int epoll_creae(int size);

分析:

  • size:epoll上能关注的最大描述符数

2. epoll_ctl:用于控制某个epoll文件描述符事件,可以注册、修改、删除

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

参数:

1. efd:epoll_create函数的返回值

2. op:对该监听红黑树所做的操作

  • EPOLL_CTL_ADD:添加新的fd到epfd中
  • EPOLL_CTL_MOD:修改fd在监听红黑树的监听事件
  • EPOLL_CTL_DE:将一个fd从监听红黑树摘下

3. fd:待监听的fd

4. event:本质struct epoll_event 结构体地址

 1 typedef union epoll_data
 2 {
 3     void*       ptr;
 4     int         fd;  //对应监听的fd
 5     uint32_t    u32;
 6     uint64_t    u64;
 7 } epoll_data_t;
 8 
 9 struct epoll_event
10 {
11     uint32_t     events;  /* Epoll events */
12     epoll_data_t data;    /* User data variable */
13 };

3. 等待IO事件发生 - 可以设置阻塞的函数

1 int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);

参数:

  • efds:epoll_create函数的返回值
  • events:传出参数,【数组】,。满足监听条件的哪些fd结构体
  • maxevents:数组元素的总个数(1024) struct epoll_events [1024]:
  • timeout:

猜你喜欢

转载自www.cnblogs.com/sunbines/p/10263749.html
今日推荐