select API 실습 코드 질문
34
3 asked

FD_ISSET(fd, &fds), FD_ISSET(STDIN_FILENO, &fds)를 같은 조건-분기문으로 묶는 것이 아니라 분리해야 되는 것 아닌가요?
select API의 return 값인 readable한 fd가 여러 개일 수도 있으니까 모두 검증해야 되지 않나요?
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의 세부적인 동작이 설명되어 있어 참고하시기 좋을 듯합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
inotify 객체에 등록된 watch descriptor 해제 관련 질문
0
29
2
wsl에서 fcntl사용
0
71
2
inotify_event 구조체 질문 [파일 이벤트 - 라이브 프로그래밍]에서...
0
178
2
./stat 파일이름
0
272
2
fopen r, r+모드 차이
0
459
2
강의를 모두 수강하고 스스로 구현하면 좋을 과제나 프로젝트 주제가 있을까요?
0
325
1
pthread 질문
0
419
2
I/O Multiplexing(select) 질문
0
323
1
inotify.c. ret 질문
0
300
1
inotify.c 질의합니다.
1
316
1
child process
0
714
1
read/blocking
0
563
1
flock
0
563
1
system call
0
595
1
pthread_create() 함수 이용했을 때, thread가 두번 호출되는 것 처럼 나타납니다. 왜 그런것인가요?
0
486
1
fork() 함수 사용시 결과 관련 질문
0
370
1
exec 관련 궁금한 사항
0
450
2
파일 디스크립터와 FILE 구조체에 대한 질문
0
551
1
buf 선언에 따른 read() fail 문제
0
250
2
파일 이벤트 - 라이브 프로그래밍 에서 캐스팅 질문
0
251
1
2번 multi thread 방법 질문
0
241
1
segmentation fault 발생 관련 문의
1
837
1
라이브 코딩 실습 코드
0
230
1
화면이 짤려요
0
544
4

