Statvfs diferencia entre () y () llama statfs del sistema?
Solución
Err, "razones históricas".
Originalmente BSD 4.4 define una llamada statfs()
. Linux implementa más tarde una llamada ligeramente diferente con el mismo nombre. POSIX estandarizada que entre todas las versiones de Unix y Freenix definiendo statvfs()
.
statfs()
es el sistema operativo específico
statvfs()
es posix conformes
Como todos ellos regresan estructuras ligeramente diferentes, los posteriores a venir no puede sustituir a la primera.
En general se debe utilizar statvfs()
, el POSIX. Tenga cuidado con consejos "usar POSIX", sin embargo, que en algunos casos (Pty, por ejemplo) el BSD (o lo que sea) uno es más portátil en la práctica.
Otros consejos
Si lo que desea es la capacidad del sistema de archivos y la información de uso, las otras respuestas son correctas: prefieren statvfs
porque es POSIX estándar y maneja tamaños de archivo grandes mejor. statfs
es BSD y Linux específica, con diferentes estructuras en cada uno. (Linux 2.6 añade nuevas statfs64
y del sistema fstatfs64
llamadas que utilizan 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ás bien con la escritura específica de Linux de código).
statfs()
está en desuso en favor de statvfs()
, que se ocupa de considerablemente mejor compatibilidad con archivos grandes. statfs()
es conocido por hacer cosas extrañas para los tamaños que exceden el valor de un largo sin signo.
Por lo que yo puedo decir (y recordar), statvfs()
ha existido desde Redhat 7.3, justo después de ser presentado como un reemplazo POSIX. Usted encontrará probablemente en (la mayoría) los sistemas modernos.