epoll_create, epoll_create1 -
открывает
файловый
дескриптор
epoll
Standard C library (
libc,
-lc)
#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, будут
закрыты,
ядро
уничтожит
экземпляр
и
освободит
связанные
с ним
ресурсы
для
повторного
использования.
Если
flags
равно 0, то,
если не
учитывать,
что
устаревший
аргумент
size
не
используется,
epoll_create1()
выполняет
тоже что и
epoll_create(). Для
различного
поведения
во
flags могут
включаться:
- EPOLL_CLOEXEC
- Устанавливает
флаг close-on-exec ( FD_CLOEXEC)
для нового
открытого
файлового
дескриптора.
Смотрите
описание
флага O_CLOEXEC в
open(2) для того,
чтобы
узнать как
это может
пригодиться.
On success, these system calls return a file descriptor (a nonnegative integer).
On error, -1 is returned, and
errno is set to indicate the error.
- EINVAL
- Аргумент
size
содержит
отрицательное
значение.
- EINVAL
- (epoll_create1())
Указано
неверное
значение в
flags.
- EMFILE
- Был
достигнут
пользовательский
предел на
количество
экземпляров
epoll,
налагаемый
/proc/sys/fs/epoll/max_user_instances.
Подробней
см. в epoll(7).
- EMFILE
- Было
достигнуто
ограничение
по
количеству
открытых
файловых
дескрипторов
на
процесс.
- ENFILE
- Достигнуто
максимальное
количество
открытых
файлов в
системе.
- ENOMEM
- Недостаточно
памяти для
создания
объекта
ядра.
epoll_create() was added in Linux 2.6. Library support is provided in
glibc 2.3.2.
epoll_create1() was added in Linux 2.6.27. Library support is provided in
glibc 2.9.
Вызовы
epoll_create() и
epoll_create1() есть
только в Linux.
В
первоначальной
реализации
epoll_create()
аргумент
size
уведомлял
ядро о
количестве
файловых
дескрипторов,
которые
вызывающий
предполагал
добавить в
экземпляр
epoll. Ядро
использовало
эту
информацию
для оценки
требуемого
количества
памяти при
начальном
размещении
внутренних
структур
данных,
описывающих
события
(если
требовалось,
ядро
выделяло
больше
места, если
вызывающий
превышал
значение,
указанное
в
size). Сейчас,
эта оценка
больше не
требуется
(ядро
динамически
выделяет
место под
структуры
данных), но
значение
size
всё равно
должно
быть
больше
нуля — для
обеспечения
обратной
совместимости
приложений
с новым
epoll
для работы
на старых
ядрах.
close(2),
epoll_ctl(2),
epoll_wait(2),
epoll(7)
Русский
перевод
этой
страницы
руководства
был сделан
Azamat Hackimov <
[email protected]>, Yuri Kozlov
<
[email protected]> и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]