man-翻译和epoll相关的内容,部分

1. int epoll_create(int size); linux

epoll_create 新建了一个epoll的实例,请求内核分配一块存储事件结构的空间,size不是后台存储的最大尺寸,只是初始化时告诉内核应该分配多大的内部空间。 socket

epoll_create 返回了一个对新的epoll实例引用的文件描述符。这个文件描述符在全部随后的epoll接口的调用中都会被用到。当不须要的时候,由epoll_create返回的文件描述符,须要用close()函数关闭。当全部对本文件应用的文件描述符都被关闭时,内核将把这个epoll实例破坏掉,并释放所分配的资源以实现再利用。 函数

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

这个系统调用控制了一个被文件描述符epfd所引用的epoll实例。它在目标文件描述符fd上请求相关的操做op。 对象

有效的op参数以下: 接口

EPOLL_CTL_ADD 在文件描述符epfd所引用的epoll实例里注册目标文件描述符fd并把event和fd指向的文件联系起来。 事件

EPOLL_CTL_MOD 资源

修改和目标文件描述符fd联系起来的event。 it

EPOLL_CTL_DEL io

移除由epfd引用的epoll实例中目标文件描述符fd。

event这个参数描述了链接fd的对象。struct epoll_event是这样定义的:

typedef union epoll_data{

    void *ptr;

    int fd;

    __uint32_t u32;

    __uint64_t u64;   

}epoll_data_t;

struct epoll_event{

    __uint32_t events;     /*Epoll events*/

    epoll_data_t data;    /*User data variable*/

}

成员变量events有一下几种类型:

EPOLLIN:

相关的文件对read可用。

EPOLLOUT:

相关的文件对write可用。

EPOLLRDHUP(自版本linux 2.6.17)

socket流结束链接,或者在链接中途中断。(这个标记在使用边缘触发模式ET时查探远端关闭)

EPOLLPRI read操做紧急数据可用

EPOLLERR 相关联的文件描述符出错。epoll_wait无论有没有在events设置它,这个事件永远被epoll_wait关注。

EPOLLHUP 相关联的文件描述符被挂断。epoll_wait不会忽略这个事件,无论events中有没有设置它。

EPOLLET 把相关联的文件描述符设置成边缘触发方式。默认的是水平触发方式。

EPOLLONESHOT (自linux 2.6.2)

把相关联的文件描述符设置单目标

相关文章
相关标签/搜索