正如标题所说,如何在 C 程序中获得卷的可用空间?我没有使用 system() 之类的技巧,它们效果不佳。(为什么?嗯,我已经试过了!)
我需要像df这样的东西,不幸的是我在标准库中没有找到任何东西。
非常感谢。
正如标题所说,如何在 C 程序中获得卷的可用空间?我没有使用 system() 之类的技巧,它们效果不佳。(为什么?嗯,我已经试过了!)
我需要像df这样的东西,不幸的是我在标准库中没有找到任何东西。
非常感谢。
假设是现代 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() 函数。
是的!解决了!谢谢H2CO3!只是一件小事:使用 st.frsize 代替 st.f_bsize。现在一切正常!谢谢!
这是工作代码:
#include <sys/statvfs.h>
struct statvfs st;
statvfs("/file/on/a/volume.ext", &st);
unsigned long free_space = st.f_bfree * st.f_frsize;