为什么 statfs() statvfs() 调用如此相似时为什么同时存在?

在什么情况下,我会优先选择一个?

最佳答案

错误,“历史原因”。

最初4.4BSD定义了statfs()调用。 Linux后来用相同的名称实现了一个稍有不同的调用。 Posix通过定义statvfs()在所有freenix和Unix版本之间对其进行了标准化。
statfs()特定于操作系统
statvfs()符合posix

由于它们都返回略有不同的结构,因此以后出现的结构不能替代第一个。

一般而言,您应该使用Posix之一statvfs()。但是,请谨慎使用“Posix”建议,因为在某些情况下(例如pty),BSD(或其他任何一种)在实践中会更便于携带。

10-06 05:33