La différence entre les appels système (statvfs) et statfs ()?
La solution
Err, "raisons historiques".
A l'origine 4.4BSD défini un appel statfs()
. Linux plus tard mis en œuvre un appel légèrement différent du même nom. Posix standardisé, il entre toutes les versions Unix et Unix libres en définissant statvfs()
.
statfs()
est OS spécifique
statvfs()
est conforme POSIX
Comme ils reviennent toutes les structures légèrement différentes, celles plus tard de venir ne peut pas remplacer le premier.
En général, vous devez utiliser statvfs()
, l'un Posix. Soyez prudent conseils « utiliser Posix », bien que, comme dans certains cas (pty, par exemple) BSD (ou autre) est un plus portable dans la pratique.
Autres conseils
Si vous voulez juste la capacité du système de fichiers et des informations d'utilisation, les autres réponses sont correctes: préfèrent statvfs
parce qu'il est POSIX standard et gère de gros fichiers mieux. statfs
est et Linux des BSD spécifiques, avec des structures différentes sur chacun. (Linux 2.6 a ajouté de nouveaux statfs64
et appels système de fstatfs64
qui utilisent une structure étendue pour gérer de plus grandes tailles.) Cependant, statfs
est toujours utile sur Linux pour déterminer le type de système de fichiers (en supposant que vous êtes d'accord avec l'écriture code spécifique à Linux).
statfs()
est dépréciée en faveur de statvfs()
, qui traite considérablement mieux avec un large soutien de fichiers. statfs()
est connu pour faire des choses bizarres pour les tailles qui dépassent la valeur d'un unsigned long.
Pour autant que je peux dire (et souvenez-vous), statvfs()
a été autour depuis Redhat 7.3, juste après avoir été introduit en remplacement Posix. Vous trouverez probablement sur (la plupart) des systèmes modernes.