2010-01-11 4 views
4

주어진 파일 시스템의 섹터 크기를 런타임에서 확인할 수 있기를 원합니다. C 코드를 사용할 수 있습니다. 예를 들어 많은 비디오 파일이 많은 32k 섹터 크기의 데이터 파티션을 포맷합니다. 나는 런타임에이 값을 얻을 수 있기를 원한다.unix/linux/osx 및 windows에서 파일 시스템 섹터 크기를 얻으려면 어떻게해야합니까?

+1

섹터 크기를 의미합니까? – user7116

+0

예 섹터 크기는() 메모리 페이지 크기가 아닌 파일 시스템을 반환하는 더 정확한 용어 –

답변

4

난 당신이 원하는 생각 statvfs (페이지 크기에 의해 당신이 섹터 크기를 의미하는 경우?) 내가 작품 리눅스와 OSX를 기억하는 것과한다. 난 당신이 f_bsize 필드를 사용해야하지만 불행히도 ATm을 테스트 리눅스 상자가 없어 생각합니다.

windows의 경우 GetDiskFreeSpace 기능을 원합니다.

Windows에서
+1

'의에서 statvfs()'리눅스 (그것이 POSIX 기능이다)에 그것을 할 수있는 한 가지 방법은 참입니다. 'statfs()'는 리눅스에서 대안이고, BSD에서 파생 된 함수로서 OSX에서 사용할 수있는 함수입니다. 두 경우 모두 반환 된 구조의'f_bsize' 필드가 원하는 것입니다. – caf

2
#include <stdlib.h> 
#include <stdint.h> 
#include <unistd.h> 

int main(int argc, char *argv[]) 
{ 
     int page_size = getpagesize(); 
     printf("The page size is %d\n", page_size); 
     exit(0); 
} 
+0

getpagesize도 될 것입니다. –

2

, 그 다음 GetSystemInfo() 기능을

void WINAPI GetSystemInfo(
    __out LPSYSTEM_INFO lpSystemInfo 
); 

를 호출 반환 SYSTEM_INFO 구조에서 dwPageSize 값에 액세스 할 수 있습니다. 이 크기는 파일 시스템 페이지의 유효성을 보장합니다. 예를 들어 버퍼없는 모드에서 파일을 읽고 쓸 때이 크기를 사용하십시오. 당신이 VOLUMEN 섹터 크기를해야하는 경우

, 단순히 다음 lpBytesPerSector 값을 읽어 GetDiskFreeSpace() 함수를 호출합니다.

관련 문제