Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101410
  • 博文数量: 30
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 402
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-22 11:09
个人简介

摸着石头过河

文章分类

全部博文(30)

文章存档

2015年(2)

2014年(28)

我的朋友

分类: LINUX

2014-11-19 15:58:14

    一、epoll使用
    1、数据结构
         主要的数据结构就是struct epoll_event
                                      {                                               
 __uint32_t events; /* Epoll events */ 
 epoll_data_t data; /* User data variable */
                                      } 
      这个结构体用来告诉内核需要监听的事件。
     其中,events可以用以下几个宏的集合:

  EPOLLIN :表示对应的文件描述符可以读(包括对端SOCKET正常关闭)

  EPOLLOUT:表示对应的文件描述符可以写

  EPOLLPRI:表示对应的文件描述符有紧急的数据可读(这里应该表示有带外数据到来)

  EPOLLERR:表示对应的文件描述符发生错误

  EPOLLHUP:表示对应的文件描述符被挂断;

  EPOLLET: 将EPOLL设为边缘触发(Edge Triggered)模式,这是相对于水平触发(Level Triggered)来说的

  EPOLLONESHOT:只监听一次事件,当监听完这次事件之后,如果还需要继续监听这个socket的话,需要再次把这个socket加入到EPOLL队列里
    其中,epoll_data_t 的定义是
typedef union epoll_data
              {
               
      void *ptr;
                      int fd;
                      __uint32_t u32;
                      __uint64_t u64;
               } epoll_data_t;

阅读(482) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~