epoll_create - открывает файловый дескриптор epoll
epoll_create(2)
открывает файловый дескриптор epoll
Other Alias
epoll_create1
ОБЗОР
#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 для работы на старых
ядрах.