EPOLL_CREATE - Linux手册页

时间:2019-08-20 17:58:37  来源:igfitidea点击:

Linux程序员手册 第2部分
更新日期: 2020-04-11

名称

epoll_create,epoll_create1-打开一个epoll文件描述符

语法

#include <sys/epoll.h>

int epoll_create(int size);
int epoll_create1(int flags);

说明

epoll_create()创建一个新的epoll(7)实例。从Linux 2.6.8开始,size参数将被忽略,但必须大于零。请参阅注释。

epoll_create()返回引用新epoll实例的文件描述符。该文件描述符用于所有随后的epoll接口调用。当不再需要时,应使用close(2)关闭epoll_create()返回的文件描述符。当所有引用epoll实例的文件描述符都已关闭时,内核将销毁该实例并释放关联的资源以供重用。

epoll_create1()

如果flags为0,则除了删除过时的size参数外,epoll_create1()与epoll_create()相同。可以在标志中包含以下值以获得不同的行为:

EPOLL_CLOEXEC
在新文件描述符上设置执行时关闭(FD_CLOEXEC)标志。有关为什么可能有用的原因,请参见open(2)中O_CLOEXEC标志的描述。

返回值

成功时,这些系统调用将返回文件描述符(非负整数)。如果出错,则返回-1,并且将errno设置为指示错误。

错误说明

EINVAL
大小不是正数。
EINVAL
(epoll_create1())在标志中指定的无效值。
EMFILE
遇到了每个用户对/ proc / sys / fs / epoll / max_user_instances施加的epoll实例数量的限制。有关更多详细信息,请参见epoll(7)。
EMFILE
已达到打开文件描述符数量的每个进程限制。
ENFILE
已达到系统范围内打开文件总数的限制。
ENOMEM
没有足够的内存来创建内核对象。

版本

epoll_create()已在2.6版中添加到内核中。从版本2.3.2开始,glibc提供了库支持。

epoll_create1()已在2.6.27版中添加到内核。从2.9版开始,glibc中提供了库支持。

遵循规范

epoll_create()是特定于Linux的。

备注

在最初的epoll_create()实现中,size参数将调用者希望添加到epoll实例的文件描述符的数量告知内核。内核使用此信息作为最初在描述事件的内部数据结构中分配的空间量的提示。 (如果需要,如果调用方的使用超出了大小提示,内核将分配更多空间。)如今,不再需要该提示(内核无需提示即可动态调整所需数据结构的大小),但大小仍必须是大于零,以确保在较旧的内核上运行新的epoll应用程序时向后兼容。

另外参见

close(2),epoll_ctl(2),epoll_wait(2),epoll(7)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/