2013-03-26 1 views
1

파일을 쓸 때 .write에 해당하는 write 함수는 fuse_operations에 각 파일 세그먼트에 대해 호출됩니다.fuse : 쓰 기 전에 쓰려는 파일의 크기를 어떻게 얻습니까?

이는 4096 바이트의 최대 세그먼트 크기 4 개 세그먼트를 가지고 있기 때문에 큰 파일 (예를 들어 12720 바이트)에 대해, 기록 기능

1. size=4096, offset=0 
2. size=4096, offset=4096 
3. size=4096, offset=8192 
4. size=432, offset=12288 

4 번 호출 될 수 있다는 것을 의미한다.

write 함수 내에서 마지막 세그먼트 크기가 write 인 시점을 확인하고 싶습니다. 모든 세그먼트를 버퍼에 넣으려고하고이 마지막으로 작성된 세그먼트를 사용하여 버퍼에 현재 전체 개체가 포함되어있어 다른 위치 (개체 저장소와 같은 위치)에 넣을 수 있음을 알립니다. 쓰여지 기 전에 쓰여지는 객체의 크기를 알면 간단한 구분 테스트 file_size == size + offset을 수행하여 마지막 세그먼트가 쓰여지는 시점을 결정할 수 있습니다.

+1

명시 적 파일 끝 표시자가 필요합니다. C에서는'fclose()'입니다. 귀하의 경우에는 그것과 같은 특별한 기능이거나 I/O 기능에 대한 추가 매개 변수 일 수 있습니다. –

답변

1

명백하게, 나는 할 수 없다. 파일 핸들러를 닫은 후에는 객체 저장소와 같은 다른 객체 전체를 다른 곳에 놓을 수 있습니다.

+0

어떻게 이러한 사례를 처리 할 수 ​​있었습니까? – Sagar

-1

청크의 길이가 4096 미만인 경우 파일의 끝 부분에 있음을 알 수 있습니다. 버퍼의 내용을 작성하십시오.

관련 문제