Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>
Docbook 원문

epoll_wait(2)

1장. epoll_wait(2)

차례
1.1. 사용법
1.2. 설명
1.3. 반환값
1.4. 에러
1.5. 예제
1.6. 참고문헌

파일에서 이벤트의 발생을 기다린다.


1.1. 사용법

#include <sys/epoll.h>

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


1.2. 설명

epoll_wait(2)는 timeout시간동안 epoll 지정자 epfd에 등록된 파일로 부터 입출력 이벤트가 발생하는지 검사한다. 만약 이벤트가 발생했다면 이벤트가 발생한 파일의 epoll 이벤트 구조체events를 되돌려준다. 다음은 정의된 events구조체이다.

	
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;  /* 유저 설정 값 */
};
		

timeout는 밀리세컨드 단위이며, -1일 경우 영원히 기다리고, 0일 때는 바로 리턴, 0보다 클때는 timeout밀리초 만큼 이벤트의 발생을 기다린다. 이벤트가 발생하면 epoll_wait(2)는 리턴하며, 이벤트가 발생한 파일의 갯수를 리턴한다. 만약 timeout 시간내에 이벤트가 발생하지 않았다면 0을 리턴한다.

epoll_wait(2)는 리턴할 때, epoll_ctl(2)에 의해서 설정된 유저 설정구조체인 epoll_data.event가 그대로 넘어온다. 이를 이용해서 우리는 이벤트가 발생했을 때 여러가지 정보를 얻어올 수 있다.


1.3. 반환값

성공했을 경우 이벤트가 발생한 파일 지정자의 갯수를 리턴한다. timeout시간 동안 이벤트가 발생하지 않았을 경우 0을, 에러가 발생했을 경우에는 -1을 리턴 한다.


1.4. 에러

EBADF

epfd가 유요한 파일 지정자가 아니다.

EBADF

epfd가 유요한 파일 지정자가 아니다.

EFAULT

잘못된 메모리 영역을 가리키고 있다.


1.5. 예제

epoll 연구 위키 의 예제를 참고하기 바란다.


1.6. 참고문헌

  1. epoll 연구 위키

  2. epoll_ctl(2)

  3. epoll_create(2)

  4. close(2)