Linux
2017-09-15
Aliases: epoll_create1(2), epoll_create1(2), epoll_create1(2), epoll_create1(2), epoll_create1(2), epoll_create1(2)
man-pages-ru
Russian man pages from the Linux Documentation Project
manpages-dev
Manual pages about using GNU/Linux for development
man-pages
Linux kernel and C library user-space interface documentation
ИМЯ
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. По окончанию использования дескриптор файла, возвращаемый epoll_create(), должен быть закрыт с помощью close(2). Когда все файловые дескрипторы, указывающие на экземпляр epoll, будут закрыты, ядро уничтожит экземпляр и освободит связанные с ним ресурсы для повторного использования.
epoll_create1()
Если flags равно 0, то, если не учитывать, что устаревший аргумент size не используется, epoll_create1() выполняет тоже что и epoll_create(). Для различного поведения во flags могут включаться:
EPOLL_CLOEXEC | |
Устанавливает флаг close-on-exec (FD_CLOEXEC) для нового открытого файлового дескриптора. Смотрите описание флага O_CLOEXEC в open(2) для того, чтобы узнать как это может пригодиться. |
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении данные системные вызовы возвращают неотрицательный файловый дескриптор. При ошибке возвращается -1 и errno устанавливается в соответствующее значение.
ОШИБКИ
EINVAL | Аргумент size содержит отрицательное значение. |
EINVAL | (epoll_create1()) Указано неверное значение в flags. |
EMFILE | Был достигнут пользовательский предел на количество экземпляров epoll, налагаемый /proc/sys/fs/epoll/max_user_instances. Подробней см. в epoll(7). |
EMFILE | Было достигнуто ограничение по количеству открытых файловых дескрипторов на процесс. |
ENFILE | Достигнуто максимальное количество открытых файлов в системе. |
ENOMEM | Недостаточно памяти для создания объекта ядра. |
ВЕРСИИ
Вызов epoll_create() был добавлен в ядро версии 2.6. В glibc соответствующая функция появилась в версии 2.3.2.
Вызов epoll_create1() был добавлен в ядро версии 2.6.27. В glibc соответствующая функция появилась в версии 2.9.
СООТВЕТСТВИЕ СТАНДАРТАМ
Вызов epoll_create() есть только в Linux.
ЗАМЕЧАНИЯ
В первоначальной реализации epoll_create() аргумент size уведомлял ядро о количестве файловых дескрипторов, которые вызывающий предполагал добавить в экземпляр epoll. Ядро использовало эту информацию для оценки требуемого количества памяти при начальном размещении внутренних структур данных, описывающих события (если требовалось, ядро выделяло больше места, если вызывающий превышал значение, указанное в size). Сейчас, эта оценка больше не требуется (ядро динамически выделяет место под структуры данных), но значение size всё равно должно быть больше нуля — для обеспечения обратной совместимости приложений с новым epoll для работы на старых ядрах.