유닉스에서 select 함수를 사용할 때 문제가 있습니다.선택 시스템 호출간에 fd_set을 재설정해야합니까?
나는 연결을 기다리는 서버가 있습니다. 먼저 수신 대기 소켓 파일 디스크립터 listener
을 FD_SET(listener, readfds)
을 사용하여 fd_set readfds
에 추가 한 다음 select()
에 사용합니다.
연결할 때 accept()
을 호출하고 허용 된 파일 설명자를 사용하여 readfds
을 선택하여 연결 데이터를 수신하기 시작합니다. 그러나 strace의 코드를 검사 할 때 readfds
에 선택 항목에 리스너가 표시되지 않으며 select()
이 두 번 실행됩니다.
FD_SET(listener, readfds)
을 사용하여 수신기 파일 설명자를 다시 설정해야 select()
을 다시 호출해야합니까?
감사합니다.
또한 Linux에서는 시간 초과 값을 수정할 수 있으므로 다시 초기화해야합니다. 표준은 이것을 허락하지만 유닉스의 다른 풍미에서는 드물다. –