강의

멘토링

커뮤니티

Inflearn コミュニティ Q&A

lsy010857511090 のプロフィール画像
lsy010857511090

投稿した質問数

Linuxシステムプログラミング - 理論と実践

ファイルイベント - ライブプログラミング

read/blocking

解決済みの質問

作成

·

558

0

read()는 한개의 event만 발생해도 blocking에서 빠져나오지 않나요?? while(ret>0)안에서 여러개의 event를 출력하는 경우가 생기나요?

linux

回答 1

0

learnit님의 프로필 이미지
learnit
インストラクター

안녕하세요. lalala님

네. 말씀하신 대로 하나의 이벤트가 발생해도 read()에서 해당 이벤트를 읽어옵니다. 그런데 짧은 기간 동안 여러 이벤트가 발생했는데, 운영체제가 이 프로세스를 충분히 스케쥴링하지 못하는 이벤트가 쌓여있는 상태로 block된 read()를 깨우게 됩니다. 즉, 버퍼에 읽어올 데이터(=이벤트)가 많은 상태인 것이죠. 그렇기 때문에 while()을 돌면서 발생한 이벤트를 읽어오게 됩니다. 이런 일이 잘 발생하지 않을 수도 있지만 상황에 따라 종종 발생하게 됩니다. 그래서 반드시 while()로 돌며 발생한 이벤트를 모두 읽어오도록 프로그램을 작성해야 합니다.

잘 이해되셨길 바라겠습니다. 추가 질문 있으시면 댓글로 남겨주세요~

lsy010857511090 のプロフィール画像
lsy010857511090

投稿した質問数

質問する