为什么 statfs()statvfs() 电话都存在时,他们如此相似?

在什么情况下我会更喜欢一个比其他?

有帮助吗?

解决方案

ERR, “历史的原因”。

最初4.4BSD限定的statfs()呼叫。 Linux的版本之后具有相同的名称略有不同的呼叫。 POSIX通过定义所有statvfs() freenix和Unix版本之间标准化它。

statfs()和具体的操作系统

statvfs()是符合POSIX的

,因为他们都返回略微不同的结构,后来者来沿不能代替第一

在一般你应该使用statvfs(),POSIX的一个。要小心“使用POSIX”的建议,虽然,在某些情况下(PTY,例如)的BSD(或其他)之一是在实践中更加便于携带。

其他提示

如果你只想文件系统的容量和使用情况的信息,其他的答案是正确的:喜欢statvfs,因为它是标准的POSIX和处理大文件大小更好。 statfs是BSD-和特定的Linux,在每个不同的结构。 (Linux 2.6中添加使用扩展的结构来处理更大尺寸的新statfs64fstatfs64系统调用)。但是, statfs是在Linux上确定文件系统的类型仍然是有用(假设你没事写作Linux特有的代码)。

statfs()被淘汰,statvfs()的,其涉及的相当更好地与大文件支持。 statfs()已知为超过无符号长的大小的值做奇怪的事情。

据我可以告诉(和记忆),statvfs()已经出现了自红帽7.3,刚刚引入的POSIX更换后。你可能会发现它(大多数)现代系统。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top