강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

킴아랑님의 프로필 이미지
킴아랑

작성한 질문수

리눅스 시스템 프로그래밍 - 이론과 실습

I/O Multiplexing(select) - 라이브 프로그래밍

select API 실습 코드 질문

작성

·

5

·

수정됨

0

image.png

FD_ISSET(fd, &fds), FD_ISSET(STDIN_FILENO, &fds)를 같은 조건-분기문으로 묶는 것이 아니라 분리해야 되는 것 아닌가요?
select API의 return 값인 readable한 fd가 여러 개일 수도 있으니까 모두 검증해야 되지 않나요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 킴아랑님께서 궁금해하시는 select API와 관련된 문제에 대해 설명 드리겠습니다.

select() 함수는 여러 파일 디스크립터를 동시에 감시하면서, 어떤 파일 디스크립터가 읽기, 쓰기, 혹은 예외적으로 처리가 가능한지 알려줍니다. 질문 주신 것처럼 FD_ISSET() 함수로 체크할 때, 독립된 조건문으로 각각의 파일 디스크립터를 확인하는 것이 일반적입니다. 이는 동일한 시점에 여러 개의 파일 디스크립터에서 이벤트가 발생할 수 있기 때문으로, 모든 파일 디스크립터에 대해 각각 확인하고 처리할 필요가 있습니다.

참고할 만한 리소스와 비슷한 질문을 찾았습니다. select 관련 질문입니다에서는 select 함수의 사용과 fd의 폴링 방법에 대한 설명이 자세히 나와 있습니다. 또한, 프로그램 동작 질문입니다!에서도 I/O와 관련된 select의 세부적인 동작이 설명되어 있어 참고하시기 좋을 듯합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

킴아랑님의 프로필 이미지
킴아랑

작성한 질문수

질문하기