stat(2) 쓰기 후 읽기는 write(2)와 일치합니까?

stat(2) 쓰기 후 읽기는 write(2)와 일치합니까?

man 2 write상태:

POSIX에서는 write() 반환 후에 발생하는 read(2)가 새 데이터를 반환한다는 것을 입증할 수 있어야 합니다. 모든 파일 시스템이 POSIX와 호환되는 것은 아닙니다.

stat(2)Linux에서 이는 및 fstat(2)특히 회원에게도 적용됩니까 stat.st_size?
특히, stat 또는 fstat를 사용하여 파일을 열고 해당 파일에 948427바이트를 성공적으로 쓰면 948427바이트가 O_CREAT표시됩니까 ? (그렇다면 이는 POSIX 파일 시스템의 보장입니까, 아니면 일반적인 Linux 파일 시스템이 실제로 제공하는 것입니까, 아니면 다른 파일 시스템이 아닌 일부 파일 시스템의 속성입니까?)st_size

답변1

stat다음에서 검색 st_size및 기타 정보(메타데이터)인덱스 노드:

...각 파일에는 파일에 대한 메타데이터가 포함된 inode가 있습니다. 응용프로그램은 stat 구조를 반환하는 stat(2)(또는 관련 호출)을 사용하여 이 메타데이터를 검색할 수 있습니다.

따라서 모든 것은 하나의 질문으로 귀결됩니다. 성공 후 언제 inode를 업데이트해야 합니까 write? 가능한:

동기적으로write: 메타데이터는 반환되기 전에 데이터와 동기적으로 제출됩니다.

  • 각 파일은 다음을 사용합니다.O_SYNC언제 표시열려 있는- 문서

write(2)(또는 유사)가 반환되면 출력 데이터 및 관련 파일 메타데이터가 기본 하드웨어로 전송되었습니다.

"S" 속성이 설정된 파일이 수정되면 변경 사항이 디스크에 동기적으로 기록됩니다. 이는 파일 하위 집합에 적용되는 "동기화" 마운트 옵션과 동일합니다.

이러한 동기식 업데이트의 경우 그렇습니다. stat일부 업데이트 후에 요청에 write변경 사항이 반영됩니다.

비동기:기본적으로 메타데이터 커밋은 데이터 변경으로 인해 트리거되지 않습니다. 이 경우 (최신) 파일 시스템에 관계없이 연속 통계는 변경 사항만 반영합니다... 순전히 기회......

관련 정보