2013-03-17 1 views
2

에 4 기가 바이트 파일에 대해 나는 4 기가 바이트 (정확히) NTFS 파티션 및 stat()와 크기를 얻을하려는 프로그램에서 파일을 가지고 있지만 항상 Unknown error (합계 반환 실패 - 1).알 수없는 오류 통화 합계() 윈도우

NTFS가 4GB 파일을 지원하지 않는다는 뜻입니까? 아니면 (Win32?) 다른 API를 사용해야합니까?

편집 :

struct stat st; 
    if (stat(path.c_str(), &st) == -1) { 
    printf("stat: %s\n", strerror(errno)); 
    } 

출력 :

stat: Unknown error 
+0

몇 가지 코드를 보여 주겠니? 특히 "알 수없는 오류"인쇄 코드. – cnicutar

답변

4

stat 함수는 파일 크기를 32 비트로 정의하는 stat 구조체를 반환합니다. 즉, 최대 4GB의 파일 크기 만 올바르게 처리 할 수 ​​있습니다. stat64을 사용해야합니다.

도 참조하십시오. stat function family on MSDN

+0

네 말이 맞아. 어떤 이유로 나는 4GB ('2^32')가 32 비트 변수에 들어 맞아야한다고 생각했지만 분명히'2^32-1' ('stat64'는 정상적으로 작동)까지만 저장할 수 있습니다. 감사. – szx

+0

그들이 오류 메시지를 더 유용하게 만들 수 있지만, 'EOVERFLOW'와 같은 것입니다 ... – szx

+0

@szx 기본 수학. 32 비트는'2^32'를 저장할 수 없습니다. –

0

NTFS는 기가 바이트 파일 이상을 지원하지 않습니다, 당신은^_^그래서하지 이잖아 ... FAT32의 한계를 생각하고