2011-01-31 3 views
2

저는 Linux에서 epoll을 머리에 쓰려고합니다. 나는 그것으로 할 수있는 다른 파일 작업이 세 가지는 epoll 기능 외에, epoll_fd 정규 파일 기술자가 될 것 같다가 주어진 :epoll 파일 설명자 작업

// Create the epoll_fd 
int epoll_fd = epoll_create(10); 

... 

// Add file descriptors to it 
struct epoll_event ev = {0}; 
ev.events |= EPOLLIN; 
ev.data.ptr = ...; 

/* for brevity, I don't do error checking here */ 
epoll_ctl(epoll_fd, EPOLL_CTL_ADD, some_fd, &ev); 

... 

// Wait for IO events 
struct epoll_event events[10]; 
int num_events = epoll_wait(epoll_fd, events, 10, -1); 

// Now handle the events 
... 

내 질문은 이것이다 :
정상적인 동작이 될 것으로 보인다 전화? man page에서

+3

사용하기 전에'* 왜 당신이 그것을 사용하고 * 당신의 당신은 poll(2) 수 있습니다. 그것은 완전히 비표준이고 이식성이 없으며 사람들이 사용하는 대다수의 장소에서 측정 가능한 이점이 없습니다. 열린 파일 제한을 1024에서 50000 이상으로 늘리지 않는 한 모든 이유가없이 코드를 이식 할 수 없게 만듭니다. –

답변

2

:

Q3 자체 FD epoll 파일 설문 조사/epoll 파일/선택인가?

A3 예.

+0

예,하지만 그게 무엇입니까? 예를 들어, 그 파일 디스크립터를 통해 select()를 읽는 것은 무엇입니까? 그것을 읽으면 어떻게됩니까? –

+0

epoll_wait 때와 똑같은 일이 발생하지만, 한 번에 여러 epoll fds를 통해 수행 할 수 있다는 점만 다릅니다. 하지만 어쨌든 스레드 당 하나의 epoll FD 만 원할 것입니다. – cdleonard

2

당신이 정말로 자신에게 물어해야 epoll` epoll_fd 자체 :)