본문 바로가기

개발 관련 기타/C++

(C언어) epoll 정의

epoll

  • 리눅스에서 select 대신 사용 가능한 I/O subscription 모델
  • FD를 등록하여 해당 FD를 계속 확인하거나 일정 시간 확인하여 요청된 이벤트를 처리하는 메케니즘

int epoll_create(int size);

  • fd들의 입출력 이벤트 저장을 위한 공간 할당

int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)

  • op 값으로 EPOLL_CTL_ADD, EPOLL_CTL_MOD, EPOLL_CTL_DEL 이 들어 올 수 있음
  • EPOLL_CTL_ADD: epoll에 fd를 등록 (fd로 처리 할 이벤트 종류 등록) [종류: EPOLLIN, EPOLLOUT, EPOLLPRI 등]

int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);

  • timeout 값으로 -1 이 오면 blocking 으로, 계속 fd를 보고 있음
  • timeout 값으로 0 이 오면, 즉시 fd 조사하고 리턴함
  • timeout 값으로 10 이 오면 10ms 당 fd 체크 및 처리