una solicita sistema reglas para operativo llamadas llamada como archivos administración c linux mount vfs

solicita - ¿Diferencia entre las llamadas al sistema statvfs() y statfs()?



llamadas al sistema para la administración de archivos (3)

Err, "razones históricas".

Originalmente 4.4BSD definió una llamada a statfs() . Linux más tarde implementó una llamada ligeramente diferente con el mismo nombre. Posix lo estandarizó entre todas las versiones de freenix y Unix definiendo statvfs() .

statfs() es específico del sistema operativo

statvfs() es statvfs() posix

Como todos devuelven estructuras ligeramente diferentes, las posteriores no pueden reemplazar a la primera.

En general debes usar statvfs() , el de Posix. Sin embargo, tenga cuidado con el consejo de "usar Posix", ya que en algunos casos (pty, por ejemplo) el BSD (o lo que sea) es más portátil en la práctica.

¿Por qué las llamadas statfs() y statvfs() existen cuando son tan similares?

¿Bajo qué circunstancias preferiría uno sobre el otro?


Si solo desea la capacidad del sistema de archivos y la información de uso, las otras respuestas son correctas: prefiera statvfs porque es POSIX estándar y maneja mejor los archivos de gran tamaño. statfs es BSD y específico de Linux, con diferentes estructuras en cada uno. (Linux 2.6 agregó nuevas llamadas al sistema statfs64 y fstatfs64 que usan una estructura expandida para manejar tamaños más grandes). Sin embargo, statfs sigue siendo útil en Linux para determinar el tipo de sistema de archivos (suponiendo que esté de acuerdo con escribir un código específico para Linux).


statfs() está en desuso en favor de statvfs() , que se ocupa considerablemente de la compatibilidad con archivos grandes. Se sabe que statfs() hace cosas extrañas para tamaños que exceden el valor de un largo sin firmar.

Por lo que puedo decir (y recordar), statvfs() ha existido desde Redhat 7.3, justo después de ser presentado como un reemplazo POSIX. Es probable que lo encuentres en (la mayoría) de los sistemas modernos.