select 함수의 매크로 FD_ISSET와 관련되어 질문 올립니다. 답변 부탁드려요
그냥 FD_ISSET는 기존 descriptor set에서 해당 소켓 descriptor I/O 변화가 있으면 양수값 리턴한다 가 아니라,
fd_set rset;
FD_SET(fileno(fp), &rset);
FD_SET(sockfd, &rset);
...
select (maxfdp1, &rset, NULL, NULL, NULL);
까지 하면 rset 의 0번과 3번이 fileno(fp)와 sockfd로 인해 1로 셋 되는거 까진 이해가 가는데,
if(FD_ISSSET(fileno(fp),&rset))
여기에서 표준입력이 들어올때 이게 참이 된다는건 그냥 간단한 규칙으로 알겠더라구여..
그런데 어떤 과정을 거쳐서 참이 되는지는 잘 모르겠습니다.
fileno(fp) 값을 찍어보니 그냐 단순히 0 일뿐인데여..
rset 값이 어떤식으로 되어있는건지..
FD_SET으로 인해 0번과 3번 셋 되어 있는 것과 동일한 rset라면,
if(FD_ISSSET(sockfd, &rset))
이 조건도 사실 참 되는거 아닌가요??
아니면 select함수에서 리턴 되면서 rset 값이 0번만 셋팅된 구조체로 바뀌는건가요??
rset 값도 찍어보고 싶은데, 어떤 값을 찍어봐야 할지 모르겠습니다.(멤버변수도 모르겠어여)
rset 값이 select 에서 return되면서 바뀌는거라면...
제가 알기론 return 은 변화된 descriptor count이기 때문에 rset 변화시켜주는 건 없을 듯한데요...
어떻게 rset가 변하는 건가요?(만일 return 후 rset 가 변하는거라면..)
질문이 참 길어졌네요...
답변 꼭 부탁드립니다.ㅠㅠ
댓글 달기