为什么 statfs()
和 statvfs()
调用如此相似时为什么同时存在?
在什么情况下,我会优先选择一个?
最佳答案
错误,“历史原因”。
最初4.4BSD定义了statfs()
调用。 Linux后来用相同的名称实现了一个稍有不同的调用。 Posix通过定义statvfs()
在所有freenix和Unix版本之间对其进行了标准化。statfs()
特定于操作系统statvfs()
符合posix
由于它们都返回略有不同的结构,因此以后出现的结构不能替代第一个。
一般而言,您应该使用Posix之一statvfs()
。但是,请谨慎使用“Posix”建议,因为在某些情况下(例如pty),BSD(或其他任何一种)在实践中会更便于携带。