libev를 통해 epoll을 사용하고 있는데 이상한 동작이 발생했습니다.
읽기 가능 이벤트를 받았는데 파일 설명자에서 모든 데이터를 읽지 못했다고 가정해 보겠습니다. libev는 레벨 트리거링을 사용하므로 읽기 이벤트를 계속 수신해야 합니다.
설명자에서만 읽는 경우에도 마찬가지입니다. 하지만 나도 쓴다면 문제가 생길 것이다.
즉, 읽기 이벤트를 수신하고 설명자에서 일부 데이터를 읽은 다음 설명자에 일부 내용을 씁니다. 이후에는 이 설명자에 새 데이터가 나타날 때까지 더 이상 읽기 이벤트가 수신되지 않습니다.
이 동작이 어딘가에 문서화되어 있는지 궁금합니다. 아니면 이것이 Linux의 버그입니까?