Rechercher une page de manuel
epoll_ctl
Langue: ja
Version: 2002-10-23 (openSuse - 09/10/07)
Section: 2 (Appels système)
̾Á°
epoll_ctl - epoll ¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤òÀ©¸æ¤¹¤ë½ñ¼°
#include <sys/epoll.h>int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)
ÀâÌÀ
Âоݥե¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ fd ¤Ø¤ÎÁàºî op ¤Î¼Â¹Ô¤òÍ׵ᤷ¡¢ epoll ¥Ç¥£¥¹¥¯¥ê¥×¥¿ epfd ¤òÀ©¸æ¤¹¤ë¡£ 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 ¥¤¥Ù¥ó¥È */ epoll_data_t data; /* ¥æ¡¼¥¶¥Ç¡¼¥¿ÊÑ¿ô */ };
events ¥á¥ó¥Ð¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ê»ÈÍѲÄǽ¤Ê¥¤¥Ù¥ó¥È¥¿¥¤¥×¤ò»È¤Ã¤Æ¹½À®¤µ¤ì¤¿ ¥Ó¥Ã¥È¥»¥Ã¥È¤Ç¤¢¤ë¡£
- EPOLLIN
- ´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¡¢ read(2) Áàºî¤¬²Äǽ¤Ç¤¢¤ë¡£
- EPOLLOUT
- ´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¡¢ write(2) Áàºî¤¬²Äǽ¤Ç¤¢¤ë¡£
- EPOLLRDHUP (¥«¡¼¥Í¥ë 2.6.17 °Ê¹ß)
- ¥¹¥È¥ê¡¼¥à¥½¥±¥Ã¥È¤Î¾ü¤¬¡¢¥³¥Í¥¯¥·¥ç¥ó¤Î close ¡¢ ¤Þ¤¿¤Ï¥³¥Í¥¯¥·¥ç¥ó¤Î½ñ¤¹þ¤ß¦¤Î shutdown ¤ò¹Ô¤Ã¤¿¡£ (¤³¤Î¥Õ¥é¥°¤ò»È¤¦¤È¡¢¥¨¥Ã¥¸¥È¥ê¥¬¤Î´Æ»ë¤ò¹Ô¤¦¾ì¹ç¤Ë¡¢ ÄÌ¿®¤Î¤â¤¦°ìü¤¬ÊĤ¸¤é¤ì¤¿¤³¤È¤ò¸¡ÃΤ¹¤ë¥³¡¼¥É¤ò Èó¾ï¤Ë´Ê·é¤Ë½ñ¤¯¤³¤È¤¬¤Ç¤¤ë¡£)
- EPOLLPRI
- read(2) Áàºî¤¬²Äǽ¤Ê¶ÛµÞ (urgent) ¥Ç¡¼¥¿¤¬¤¢¤ë¡£
- EPOLLERR
- ´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ë¥¨¥é¡¼¾ò·ï¤¬µ¯¤³¤Ã¤¿¡£ epoll_wait(2) ¤Ï¾ï¤Ë¤³¤Î¥¤¥Ù¥ó¥È¤òÂԤĤΤǡ¢ events ¤ËÀßÄꤹ¤ëɬÍפϤʤ¤¡£
- EPOLLHUP
- ´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ë¥Ï¥ó¥°¥¢¥Ã¥×¤¬µ¯¤³¤Ã¤¿¡£ epoll_wait(2) ¤Ï¾ï¤Ë¤³¤Î¥¤¥Ù¥ó¥È¤òÂԤĤΤǡ¢ events ¤ËÀßÄꤹ¤ëɬÍפϤʤ¤¡£
- EPOLLET
- ´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ë ¥¨¥Ã¥¸¥È¥ê¥¬Æ°ºî (Edge Triggered behaviour) ¤òÀßÄꤹ¤ë¡£ epoll ¤Î¥Ç¥Õ¥©¥ë¥È¤ÎÆ°ºî¤Ï¡¢¥ì¥Ù¥ë¥È¥ê¥¬ (Level Triggered) ¤Ç¤¢¤ë¡£ ¥¨¥Ã¥¸¥È¥ê¥¬¤È¥ì¥Ù¥ë¥È¥ê¥¬¤Ë¤è¤ë¥¤¥Ù¥ó¥ÈʬÇÛµ¡¹½ (event distribution architectures) ¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ê¾ðÊó¤Ï¡¢ epoll(7) ¤ò»²¾È¤¹¤ë¤³¤È¡£
- EPOLLONESHOT (¥«¡¼¥Í¥ë 2.6.2 °Ê¹ß)
- ´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ë °ì·âÆ°ºî (One-Shot behaviour) ¤òÀßÄꤹ¤ë¡£ ¤³¤ì¤Ï¥¤¥Ù¥ó¥È¤¬ epoll_wait(2) ¤Ë¤è¤Ã¤Æ°ú¤½Ð¤µ¤ì¤¿¸å¡¢ ´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤¬ÆâÉôŪ¤ËÇË´þ¤µ¤ì¡¢ epoll ¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë¤è¤Ã¤Æ¥¤¥Ù¥ó¥È¤¬Êó¹ð¤µ¤ì¤Ê¤¯¤Ê¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£ ¿·¤·¤¤¥¤¥Ù¥ó¥È¥Þ¥¹¥¯¤Ç¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤òºÆÅÙ͸ú¤Ë¤¹¤ë¤¿¤á¤Ë¤Ï¡¢ epoll_ctl(2) ¤Ë EPOLL_CTL_MOD ¤ò»ØÄꤷ¤Æ¸Æ¤Ó½Ð¤µ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
epoll ¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ï¡¢ poll(2) ¤ò¥µ¥Ý¡¼¥È¤¹¤ëÁ´¤Æ¤Î¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£ op °ú¤¿ô¤Ë»ØÄê¤Ç¤¤ë͸ú¤ÊÃͤϡ¢°Ê²¼¤ÎÄ̤ê:
-
- EPOLL_CTL_ADD
- Âоݥե¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ fd ¤ò epoll ¥Ç¥£¥¹¥¯¥ê¥×¥¿ epfd ¤ËÄɲä·¡¢¥¤¥Ù¥ó¥È event ¤ò fd ¤Ë¥ê¥ó¥¯¤µ¤ì¤¿ÆâÉô¥Õ¥¡¥¤¥ë¤Ë´ØÏ¢ÉÕ¤±¤ë¡£
- EPOLL_CTL_MOD
- ¥¤¥Ù¥ó¥È event ¤òÂоݥե¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ fd ¤Ë´ØÏ¢ÉÕ¤±¤ë¤è¤¦¤ËÊѹ¹¤¹¤ë¡£
- EPOLL_CTL_DEL
- Âоݥե¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ fd ¤ò epoll ¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ epfd ¤«¤éºï½ü¤¹¤ë¡£ event ¤Ï̵»ë¤µ¤ì¤ë¤Î¤Ç¡¢NULL ¤ËÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë (⤷¡¢²¼µ¤Î¡Ö¥Ð¥°¡×¤Î¾Ï¤ò»²¾È¤Î¤³¤È)¡£
ÊÖ¤êÃÍ
À®¸ù¤·¤¿¾ì¹ç¡¢ epoll_ctl(2) ¤Ï 0 ¤òÊÖ¤¹¡£ ¥¨¥é¡¼¤¬µ¯¤³¤Ã¤¿¾ì¹ç¡¢ epoll_ctl(2) ¤Ï -1 ¤òÊÖ¤·¡¢ errno ¤òŬÀÚ¤ËÀßÄꤹ¤ë¡£¥¨¥é¡¼
- EBADF
- epfd ¤« fd ¤¬Í¸ú¤Ê¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ç¤Ê¤¤¡£
- EEXIST
- op ¤¬ EPOLL_CTL_ADD ¤Ç¤¢¤ê¡¢¤«¤ÄÍ¿¤¨¤é¤ì¤¿¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ fd ¤¬´û¤Ë epfd ¤Ë¸ºß¤¹¤ë¡£
- EINVAL
- epfd ¤¬ epoll ¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ç¤Ê¤¤¡£ ¤Þ¤¿¤Ï fd ¤¬ epfd ¤ÈƱ°ì¤Ç¤¢¤ë¡£ ¤Þ¤¿¤ÏÍ׵ᤵ¤ì¤¿Áàºî op ¤¬¤³¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
- ENOENT
- op ¤¬ EPOLL_CTL_MOD ¤Þ¤¿¤Ï EPOLL_CTL_DEL ¤Ç¤¢¤ê¡¢¤«¤Ä fd ¤¬ epfd ¤Ë¸ºß¤·¤Ê¤¤¡£
- ENOMEM
- Í׵ᤵ¤ì¤¿ op À©¸æÁàºî¤ò°·¤¦¤Î¤Ë½½Ê¬¤Ê¥á¥â¥ê¤¬¤Ê¤¤¡£
- EPERM
- Âоݥե¡¥¤¥ë fd ¤¬ epoll ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¡£
½àµò
epoll_ctl(2) ¤Ï Linux Æȼ«¤Ç¤¢¤ê¡¢¥«¡¼¥Í¥ë 2.5.44 ¤ÇƳÆþ¤µ¤ì¤¿¡£¥Ð¥°
2.6.9 ¤è¤êÁ°¤Î¥«¡¼¥Í¥ë¤Ç¤Ï¡¢ EPOLL_CTL_DEL Áàºî¤ÎºÝ¡¢°ú¤¿ô event ¤Ë (¤¿¤È¤¨Ìµ»ë¤µ¤ì¤ë¾ì¹ç¤Ç¤¢¤Ã¤Æ¤â) NULL ¤Ç¤Ê¤¤¥Ý¥¤¥ó¥¿¤òÅϤ¹É¬Íפ¬¤¢¤Ã¤¿¡£ ¥«¡¼¥Í¥ë 2.6.9 °Ê¹ß¤Ç¤Ï¡¢ EPOLL_CTL_DEL ¤ò»È¤¦ºÝ¤Ë event ¤Ë NULL ¤ò»ØÄê¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£´ØÏ¢¹àÌÜ
epoll_create(2), epoll_wait(2), poll(2), epoll(7)Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre