read에 관한 질문

cjwlife의 이미지

안녕하세요. daemon하나를 구현하고 있는데 read에서 잘 안되는점이 있어서 글을 올려봅니다.

int main(){
int ret,fd;
ret = mkfifo(./fifo, 0666);
fd = open(./fifo,O_RDWR);
while(1){
memset(rbuff, 0x00, sizeof(rbuff));
rsize = read(fd, rbuff, sizeof(rbuff));
if(rsize>0) {
// 포직스 타이머 내용.
}else{
}
}
}

위와 같이 daemon이 돌고 있고 write해주는 곳에서는 WRONLY로 timeout시간을 써주어
타이머가 동작하는 내용입니다. 근데 타이머가 동작하고 있는 도중에 새로는 값들이 fifo에 쓰여지면
read가 안되는 경우가 있는데 왜그런걸까요?

pynoos의 이미지


포직스 타이머 내용에서 실행이 멈춰있는것 아닌가요? 다시 read에 들어갈일이 없으니 그럴것 같은데.