poll 타임 아웃에 관한 질문입니다.
글쓴이: zhangyuan / 작성시간: 토, 2004/03/20 - 5:24오후
int retval; struct pollfd pfds; pfds.events = POLLIN|POLLRDNORM|POLLRDBAND|POLLPRI; pfds.revents = 0; poll_timeout = -1; retval = poll(&pfds, 1, poll_timeout); if( 0 == retval ) { ...... }
이런것이 있는데...
제가 생각하기로는 timeout parameter에 -1을 넣으면
무한정 기다리는 것이 되므로
0 이 반환되는 일은 없는것으로 아는데..
어떤 소스를 분석하다가 보니까...
위의 if 문 안에서 많은 일을 했더군요..
저런 경우가 생기는 건가여? :(
Forums:
POLLIN|POLLRDNORM|POLLRDBAND|POLLPRI
POLLIN|POLLRDNORM|POLLRDBAND|POLLPRI
4가지 이벤트중 하나라도 발생하면 0이 리턴되겠죠.
발생안하면 계속 wait 상태 일테지요.
제가 알기로는..
제가 잘못 알고 있었나여?
제가 아는것에 한해서는 위의 조건이 만족되었을때는
retval <- count of ready descriptors 가 되는것으로 알고 있는데요..
일반적으로 타임아웃을 쓰는것은 그 시간동안 기다리다가
루프를 다시 돌릴려고..그러니까 그 시간동안 fd 값들이 변한것이 있기때문에
그들을 적용 시키기 위해서 사용하는것을 알고 사용하고 있었는데여..
재 지적 부탁드립니다..
삶의 이탈을 꿈꾸며..
아구구. 제가 착각했었습니다. 일반 적인 poll 함수의 구현을 생각해야
아구구. 제가 착각했었습니다. 일반 적인 poll 함수의 구현을 생각해야 하는데
커널 레벨에서 제 마음데로 poll 핸들러를 만들던걸 생각해서 말이 헛나왔네요.
zhangyuan님께서 설명한 것들 모두 맞습니다. 아마 코드 저자가
timeout값을 설정해서 돌리면서 테스트해보기 위한 코드가 아니었을지
추측해 봅니다. 그런데 file destriptor에 설정이 하나도 되어 있지 않은것을
보면 저 코드가 전부는 아니겠죠?
댓글 달기