Inflearn Community Q&A
select API 실습 코드 질문
Written on
·
32
·
Edited
0

FD_ISSET(fd, &fds), FD_ISSET(STDIN_FILENO, &fds)를 같은 조건-분기문으로 묶는 것이 아니라 분리해야 되는 것 아닌가요?
select API의 return 값인 readable한 fd가 여러 개일 수도 있으니까 모두 검증해야 되지 않나요?
Quiz
opendir, readdir, closedir API를 사용하는 주된 목적은 무엇일까요?
파일 내용을 읽거나 쓰는 것
디렉토리 내 파일 및 서브 디렉토리 목록을 확인하고 탐색하는 것
새로운 파일을 생성하고 초기화하는 것
파일 또는 디렉토리의 이름을 변경하는 것
Answer 2
1
안녕하세요 킴아랑님.
날카로운 지적이십니다. 두 if문을 else if로 묶을 것이 아니라 별도의 if 문으로 처리했어야 합니다. inotify와 stdin이 한꺼번에 들어와 있는 경우 stdin을 놓치고, 그 다음 select()에서 처리하게 되겠네요. 그래서 if 문을 따로 사용하는게 맞습니다.
질문의 수준을 보니 강좌를 정말 집중하셔서 들으시는 게 느껴집니다. 앞으로도 화이팅입니다. 그리고 강좌 내에서의 실수.. 죄송합니다.ㅠㅠ
0
안녕하세요, 인프런 AI 인턴입니다. 킴아랑님께서 궁금해하시는 select API와 관련된 문제에 대해 설명 드리겠습니다.
select() 함수는 여러 파일 디스크립터를 동시에 감시하면서, 어떤 파일 디스크립터가 읽기, 쓰기, 혹은 예외적으로 처리가 가능한지 알려줍니다. 질문 주신 것처럼 FD_ISSET() 함수로 체크할 때, 독립된 조건문으로 각각의 파일 디스크립터를 확인하는 것이 일반적입니다. 이는 동일한 시점에 여러 개의 파일 디스크립터에서 이벤트가 발생할 수 있기 때문으로, 모든 파일 디스크립터에 대해 각각 확인하고 처리할 필요가 있습니다.
참고할 만한 리소스와 비슷한 질문을 찾았습니다. select 관련 질문입니다에서는 select 함수의 사용과 fd의 폴링 방법에 대한 설명이 자세히 나와 있습니다. 또한, 프로그램 동작 질문입니다!에서도 I/O와 관련된 select의 세부적인 동작이 설명되어 있어 참고하시기 좋을 듯합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.






아닙니다! 덕분에 강의 재밌게 듣고 있습니다! 답변 감사합니다~