select() 함수 관련 질문 합니다.
글쓴이: vilinux / 작성시간: 목, 2004/06/24 - 1:43오후
int res, max_fd;
FD_SET(fd_sock, &readfds);
max_fd = fd_sock + 1;
res = select( max_fd, &readfds, NULL, NULL, &tv );
이렇게 있다면 도대체 fd_sock 에다가 +1을 왜 하나요 ??
이해가 안가네요~
그리고 하나만 기달리는게 아니고 fd_test해서 두개를 셀렉한다면
fd_test 에도 +1을 또해줘야하는지? 궁금합니다!
아직 초짜라서뤼.......많은 답변좀.
Forums:
새로 인지하게 될 소켓은 당연히현재 가지고 있는 sockfd에 +
새로 인지하게 될 소켓은 당연히
현재 가지고 있는 sockfd에 +1을 하게 되는 것이죠.
그래야 새로운 file descriptor에 대해 kernel이 알고 관리할 수 있죠..
unp v1을 잘 보세요.
(번역서라면 164페이지에 있네요.. )
fdset은 단순한 SET(집합)이라고 보시면 되구요.
select함수니까 당연히 기본 제한인 FD_MAXSET인 1024에 걸릴테니.
man select[quote]DESCRIPTION T
man select
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
아마 select 구현중에 루프 카운터 비교를 <= 이 아닌 <
아마 select 구현중에 루프 카운터 비교를 <= 이 아닌 < 로 비교해서 그런 것 아닐까 합니다만... (찾아보니 프비는 그렇군요.)
댓글 달기