epoll_ctl() metodunu anlamadan önce epoll_event yapısını anlamak gerekir.
epoll_create1() ile yaratılan socket set'ine yeni bir socket eklemek için kullanılır
Örnek - EPOLL_CTL_ADD
İzlenecek yeni fd eklemek için şöyle yaparız. Bu fd'de bir olay olursa ev yapısı geri verilir.
Örnek
İzlenecek yeni fd eklemek için şöyle yaparız. Bu fd'de bir olay olursa ev yapısı geri verilir.
epoll_event ev;
ev.data.fd = timerfd;
epoll_ctl(epollfd, EPOLL_CTL_ADD, timerfd, &ev);
Örnek - EPOLL_CTL_ADD
Şöyle yaparız.Burada socketin EPOLLIN ve EPOLLRDHUP olayları dinleniyor
Şöyle yaparız.Burada socketin EPOLLIN ve EPOLLRDHUP olayları dinleniyor
int servFd = socket (...);
int efd = epoll_create1 (EPOLL_CLOEXEC);
struct epoll_event epollEvt;
epollEvt.events = EPOLLIN | EPOLLRDHUP;
epollEvt.data.u32 = servFd;
epoll_ctl (efd, EPOLL_CTL_ADD, servFd, &epollEvt);
Açıklaması şöyle
A detail to note: it’s important to set the level-trigger (EPOLLIN) but not the edge-trigger (EPOLLET) on the listening socket.
Şöyle yaparız. EPOLLIN olayı dinleniyor
void register_fd(int efd, int fd) {struct epoll_event event;event.data.fd = fd;event.events = EPOLLIN;epoll_ctl(efd, EPOLL_CTL_ADD, fd, &event);// Error check.}
Hiç yorum yok:
Yorum Gönder