2011-12-21 2 views
2

차단 모드에서 파일/장치에 쓸 경우 write() 호출은 모든 바이트 (신호 중단이 없다고 가정)가 Buffered Cache(Kernel Buffer)으로 돌아 오거나 모든 바이트를 파일/장치에 기록 할 때 반환됩니다. (이것은 내 이전 question의 확장입니다.)쓰기 시스템 호출은 언제 반환합니까?

답변

1

성공한 경우 데이터를 커널 메모리에 쓴 후 write이 반환됩니다. write 시스템 호출을 사용하면 디스크에 쓰는 것에 대한 보장이 없으므로이 경우 fsync이 필요합니다. 실제로 fsync은 비트가 실제로 플래터 자체에 쓰여지는 것을 보증하지 않습니다. 단지 IO 작업이 완료된 것입니다.

(물론이 동작을 변경하는 데 사용할 수있는 다양한 플랫폼 관련 모드와 설정이 있습니다.)

관련 문제