2017-10-05 20 views
0

epoll_wait()의 두 번째 매개 변수는 size = sizeof (struct epoll_event) * 총 숫자 이벤트 (파일 설명자) 호출자가 예상하는 (또는 모니터링하는) 버퍼입니다. 이 버퍼는 처음으로 epoll_wait()에 전달되기 전에 항상 0으로 초기화됩니다. 다음 코드를 epoll_wait() events buffer reset

memset(&events[0], 0, maxEvents * sizeof (struct epoll_event)) 
do 
{ 
    result = epoll_wait(epoll_fd, &events[0], maxEvents, timeout) 
    if (result) 
    { 
     //process events 
    } 
} while (1) 

모든 시간에 epoll_wait()가 반환하는 이벤트를 처리 한 후 이벤트를 버퍼를 재설정하는 것이 좋은가요 니펫을?

답변

0

아니요

더 나은 방법은 코드에있는 버그를 수정하는 것입니다. result ~ epoll_wait은 부울이 아닙니다. 이것은 제공된 버퍼 목록에 얼마나 많은 버퍼가 채워 졌는지를 지정하는 정수입니다.

버퍼 만 읽을 수 있으면 버퍼를 전혀 초기화하지 않아도됩니다.