read/blocking
read()는 한개의 event만 발생해도 blocking에서 빠져나오지 않나요?? while(ret>0)안에서 여러개의 event를 출력하는 경우가 생기나요?
Câu trả lời 1
0
안녕하세요. lalala님
네. 말씀하신 대로 하나의 이벤트가 발생해도 read()에서 해당 이벤트를 읽어옵니다. 그런데 짧은 기간 동안 여러 이벤트가 발생했는데, 운영체제가 이 프로세스를 충분히 스케쥴링하지 못하는 이벤트가 쌓여있는 상태로 block된 read()를 깨우게 됩니다. 즉, 버퍼에 읽어올 데이터(=이벤트)가 많은 상태인 것이죠. 그렇기 때문에 while()을 돌면서 발생한 이벤트를 읽어오게 됩니다. 이런 일이 잘 발생하지 않을 수도 있지만 상황에 따라 종종 발생하게 됩니다. 그래서 반드시 while()로 돌며 발생한 이벤트를 모두 읽어오도록 프로그램을 작성해야 합니다.
잘 이해되셨길 바라겠습니다. 추가 질문 있으시면 댓글로 남겨주세요~
inotify 객체에 등록된 watch descriptor 해제 관련 질문
0
58
2
select API 실습 코드 질문
0
60
2
wsl에서 fcntl사용
0
86
2
inotify_event 구조체 질문 [파일 이벤트 - 라이브 프로그래밍]에서...
0
196
2
./stat 파일이름
0
284
2
fopen r, r+모드 차이
0
469
2
강의를 모두 수강하고 스스로 구현하면 좋을 과제나 프로젝트 주제가 있을까요?
0
332
1
pthread 질문
0
427
2
I/O Multiplexing(select) 질문
0
328
1
inotify.c. ret 질문
0
310
1
inotify.c 질의합니다.
1
322
1
child process
0
728
1
flock
0
571
1
system call
0
608
1
pthread_create() 함수 이용했을 때, thread가 두번 호출되는 것 처럼 나타납니다. 왜 그런것인가요?
0
494
1
fork() 함수 사용시 결과 관련 질문
0
389
1
exec 관련 궁금한 사항
0
464
2
파일 디스크립터와 FILE 구조체에 대한 질문
0
563
1
buf 선언에 따른 read() fail 문제
0
259
2
파일 이벤트 - 라이브 프로그래밍 에서 캐스팅 질문
0
263
1
2번 multi thread 방법 질문
0
251
1
segmentation fault 발생 관련 문의
1
853
1
라이브 코딩 실습 코드
0
242
1
화면이 짤려요
0
563
4

