0

正如标题所说,如何在 C 程序中获得卷的可用空间?我没有使用 system() 之类的技巧,它们效果不佳。(为什么?嗯,我已经试过了!)

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

非常感谢。

4

2 回答 2

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() 函数

于 2012-10-02T07:33:34.610 回答
1

是的!解决了!谢谢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;
于 2012-10-03T11:22:05.930 回答