如何在C程序中获得卷的可用空间?

时间:2012-10-02 07:22:13

标签: c filesystems volume

正如标题所说,我怎样才能在C程序中获得卷的可用空间? 我没有使用像system()那样的技巧,它们不能正常工作。 (为什么?好吧,我已经尝过了!)

我需要像df这样的东西,遗憾的是我在标准库中找不到任何东西。

非常感谢。

2 个答案:

答案 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;