2012-10-02 3 views
0

제목과 마찬가지로 C 프로그램에서 볼륨의 여유 공간을 확보하려면 어떻게해야합니까? system()과 같은 트릭을 사용하지 않고 있지만 제대로 작동하지 않습니다. (왜? 글쎄, 이미 시도 했어!)C 프로그램에서 볼륨의 여유 공간을 확보하려면 어떻게합니까?

나는 df와 같은 것을 필요로한다. 불행하게도 나는 표준 라이브러리에서 아무것도 찾지 못했다.

대단히 감사합니다. 현대 POSIX (리눅스, OS X, 등) 가정

+2

? 이것이 OS 고유의 것이기 때문입니다. –

+1

"볼륨"개념은 메모리 할당이 아닌 파일 시스템에 속합니다. – axis

+0

Mac OSX로 작업하지만, 코드가 리눅스에도 이식 될 수 있기를 바랍니다 ... – Mc128k

답변

5

, 당신은 statvfs를 사용할 수 있습니다

Windows의
struct statvfs st; 
statvfs("/file/on/a/volume.ext", &st); 
unsigned long free_space = st.f_bfree * st.f_frsize; 

은 WinAPI를가 GetDiskFreeSpaceEx() function이 포함되어 있습니다.

+0

좋아, 먼저 시도해 보겠습니다. – Mc128k

+0

작동하지 않으면 커다란 가치가 있습니다. 나는 22GB가 무료이며 5953005027328 ... 내가 뭐 잘못하고 있니? 고맙습니다. – Mc128k

+0

부호없는 long을 사용했습니다. free_space = st.f_bavail * st.f_bsize; – Francesquini

1

예! 해결! H2CO3 감사합니다! st.f_bsize 대신 st.frsize를 사용하십시오. 이제 모든 것이 작동합니다! 고맙습니다!

이 작업 코드 : OS에 대한

#include <sys/statvfs.h> 
struct statvfs st; 
statvfs("/file/on/a/volume.ext", &st); 
unsigned long free_space = st.f_bfree * st.f_frsize; 
+0

좋은 찾기, +1. 감사! –

관련 문제