#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장. epoll_wait(2)
파일에서 이벤트의 발생을 기다린다.
1.1. 사용법
1.2. 설명
epoll_wait(2)는 timeout시간동안 epoll 지정자 epfd에 등록된 파일로 부터 입출력 이벤트가 발생하는지 검사한다. 만약 이벤트가 발생했다면 이벤트가 발생한 파일의 epoll 이벤트 구조체events를 되돌려준다. 다음은 정의된 events구조체이다.
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. 에러
epfd가 유요한 파일 지정자가 아니다.
epfd가 유요한 파일 지정자가 아니다.
잘못된 메모리 영역을 가리키고 있다.
1.5. 예제
epoll 연구 위키 의 예제를 참고하기 바란다.
1.6. 참고문헌
epoll 연구 위키
epoll_ctl(2)
epoll_create(2)
close(2)
Recent Posts
Archive Posts
Tags