배열 read는 반환된 실제 길이만 처리하며 EOF까지 반복한다

요청한 배열이 매번 가득 찬다는 보장은 없습니다.

read(buffer)

입력 요청

n

실제 읽은 길이

n == -1

EOF 종료

write

buffer[0..n)

next

다음 조각

EOF가 아니면 다시 read

핵심: 0..length 범위의 n만 쓰고 -1에서 종료하면 중간 짧은 읽기와 마지막 조각을 모두 안전하게 다룹니다.