我需要在分区上获得总数和免费大小。我怎么能用D得到它? 我应该使用哪些功能?
答案 0 :(得分:5)
在Posix系统(包括Linux,但通常不是Windows)上,您可以使用statvfs
C函数,该函数可通过import core.sys.posix.sys.statvfs;
在D中获得。
一般来说,任何Posix C函数都位于import core.sys.posix.something
,其中something
与#cinlude
名称相同,只有/
换出.
无论如何,这个小程序将打印出一些关于"/"
安装的文件系统的信息:
import core.sys.posix.sys.statvfs;
import std.stdio;
void main() {
statvfs_t buf;
if(statvfs("/", &buf))
throw new Exception("failed");
writeln(buf.f_bfree * buf.f_bsize, " free bytes");
writeln(buf.f_blocks * buf.f_bsize, " total size in bytes");
writeln((buf.f_bfree * buf.f_bsize) / 1024, " free KB");
writeln((buf.f_blocks * buf.f_bsize) / 1024, " total size in KB");
writeln(100 - (buf.f_bfree * 100 / buf.f_blocks), "% used");
}
这是一个非常简单的函数调用。在Windows上,它是不同的,但同样容易:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa364937%28v=vs.85%29.aspx
只需调用该功能。我可以为你写一个例子,如果你需要一个,但我现在还没有,因为包含它的更新的Windows标题在几周之内不会包括在下一个D版本中,所以你&#39 ; d现在必须extern(Windows)
...但是在几周之内你就不必这么做了。
答案 1 :(得分:1)
它肯定是特定于操作系统的。在Linux系统上,您需要statfs(2)系统调用(在C中)。您可能需要在C& C之间制作胶水代码。 D你自己。