差statvfs()和statfs()系统的电话?
解决方案
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中添加使用扩展的结构来处理更大尺寸的新statfs64
和fstatfs64
系统调用)。但是, statfs
是在Linux上确定文件系统的类型仍然是有用(假设你没事写作Linux特有的代码)。
statfs()
被淘汰,statvfs()
的,其涉及的相当更好地与大文件支持。 statfs()
已知为超过无符号长的大小的值做奇怪的事情。
据我可以告诉(和记忆),statvfs()
已经出现了自红帽7.3,刚刚引入的POSIX更换后。你可能会发现它(大多数)现代系统。
不隶属于 StackOverflow