Pregunta

¿Por qué la statfs() y statvfs() llama tanto existir cuando son tan similares?

¿En qué circunstancias habría de preferir uno sobre el otro?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top