正如标题所说,我怎样才能在C程序中获得卷的可用空间? 我没有使用像system()那样的技巧,它们不能正常工作。 (为什么?好吧,我已经尝过了!)
我需要像df这样的东西,遗憾的是我在标准库中找不到任何东西。
非常感谢。
答案 0 :(得分:5)
假设现代POSIX(Linux,OS X等),您可以使用statvfs:
struct statvfs st;
statvfs("/file/on/a/volume.ext", &st);
unsigned long free_space = st.f_bfree * st.f_frsize;
对于Windows,WinAPI包含GetDiskFreeSpaceEx() function。
答案 1 :(得分:1)
呀!解决了!谢谢H2CO3! 只是一件小事:而不是st.f_bsize使用st.frsize。 现在一切正常!谢谢!
这是工作代码:
#include <sys/statvfs.h>
struct statvfs st;
statvfs("/file/on/a/volume.ext", &st);
unsigned long free_space = st.f_bfree * st.f_frsize;