헤더 정의
magic signature, format version, endian marker, payload 길이를 먼저 쓴다.
파일을 열자마자 형식을 식별한다struct를 그대로 write하면 빠르지만, padding, endian, 정렬, 컴파일러 차이, 버전 변경 때문에 다른 환경에서 읽기 어려워질 수 있다. 안정적인 바이너리 I/O는 signature, version, length, endian 규칙을 명시한 format을 먼저 정한다.
magic signature, format version, endian marker, payload 길이를 먼저 쓴다.
파일을 열자마자 형식을 식별한다정수 크기, 부호, byte order, 문자열 길이를 고정해 하나씩 기록한다.
struct 통째 쓰기는 내부 padding을 포함한다read가 요청한 byte 수를 모두 채웠는지 확인하고 실패하면 상태를 버린다.
EOF 중간 파일은 정상 데이터가 아니다새 필드가 추가되면 version에 따라 기본값, skip, migration 경로를 둔다.
오래된 파일을 읽을지 정책이 필요하다checksum, record count, length prefix로 잘린 파일과 손상 파일을 구분한다.
조용한 잘못된 읽기가 가장 위험하다