Diferença entre statvfs () e statfs () chama de sistema?
Solução
Err, "razões históricas".
Originalmente 4.4BSD definida uma chamada statfs()
. Linux mais tarde implementada uma chamada ligeiramente diferente com o mesmo nome. Posix padronizado que entre todas as versões freenix e Unix, definindo statvfs()
.
statfs()
é específico do OS
statvfs()
é posix-conformes
Como todo o retorno que eles ligeiramente diferentes estruturas, os posteriores para vir junto não pode substituir o primeiro.
Em geral, você deve usar statvfs()
, o Posix um. Tenha cuidado com o "uso Posix" conselho, porém, como em alguns casos (Pty, por exemplo), o BSD (ou qualquer outro) é mais portátil na prática.
Outras dicas
Se você quiser apenas a capacidade do sistema de arquivos e informações de uso, as outras respostas estão corretas: prefira statvfs
porque é padrão arquivo grande POSIX e alças tamanhos melhor. statfs
é específico Linux-BSD e, com diferentes estruturas em cada um. (Linux 2.6 adicionou novas chamadas statfs64
e do sistema fstatfs64
que usam uma estrutura expandido para lidar com tamanhos maiores.) No entanto, statfs
ainda é útil em Linux para determinar o tipo de sistema de arquivos (supondo que você está bem com a escrita Linux-específicas de código).
statfs()
é depreciado em favor do statvfs()
, que trata consideravelmente melhor com suporte a arquivos grandes. statfs()
é conhecido por fazer coisas estranhas para tamanhos que excedam o valor de um unsigned long.
Tanto quanto eu posso dizer (e lembre-se), statvfs()
existe desde Redhat 7.3, apenas depois de ser apresentado como um substituto POSIX. Você provavelmente vai encontrá-lo em (a maioria) sistemas modernos.