GNU/Linux >> Tutoriels Linux >  >> Linux

Différence entre les appels système statvfs() et statfs() ?

statfs() est obsolète au profit de statvfs() , qui traite considérablement mieux avec le support de fichiers volumineux. statfs() est connu pour faire des choses étranges pour les tailles qui dépassent la valeur d'un long non signé.

Autant que je sache (et que je m'en souvienne), statvfs() existe depuis Redhat 7.3, juste après avoir été introduit en remplacement de POSIX. Vous le trouverez probablement sur (la plupart) des systèmes modernes.


Euh, "raisons historiques".

À l'origine, 4.4BSD définissait un statfs() appel. Linux a ensuite implémenté un appel légèrement différent avec le même nom. Posix l'a standardisé entre toutes les versions freenix et Unix en définissant statvfs() .

statfs() est spécifique au système d'exploitation

statvfs() est conforme à posix

Comme ils renvoient tous des structures légèrement différentes, les derniers à venir ne peuvent pas remplacer les premiers.

En général, vous devez utiliser statvfs() , celle de Posix. Soyez prudent sur les conseils "utiliser Posix", cependant, car dans certains cas (pty, par exemple) le BSD (ou autre) est plus portable en pratique.


Si vous souhaitez uniquement des informations sur la capacité et l'utilisation du système de fichiers, les autres réponses sont correctes :préférez statvfs car il s'agit de POSIX standard et gère mieux les fichiers de grande taille. statfs est spécifique à BSD et Linux, avec des structures différentes pour chacun. (Linux 2.6 a ajouté le nouveau statfs64 et fstatfs64 appels système qui utilisent une structure étendue pour gérer des tailles plus grandes.) Cependant, statfs est toujours utile sous Linux pour déterminer le type de système de fichiers (en supposant que vous êtes d'accord pour écrire du code spécifique à Linux).


Linux
  1. Différence entre 2>&-, 2>/dev/null, |&, &>/dev/null et>/dev/null 2>&1 ?

  2. Quelle est la différence entre Sudo Su - et Sudo Su - ?

  3. Différence entre Eot et Eof?

  4. Différence entre [0-9], [[:digit:]] et D ?

  5. Différence entre les applications Gtk et Qt ?

Différence entre apt et apt-get expliquée

Quelle est la différence entre un appel système et un appel de bibliothèque ?

différence entre les cgroups et les espaces de noms

Quelle est la différence entre procfs et sysfs ?

Quelle est la différence entre un appel Library et un appel System sous Linux ?

Quelle est la différence entre les appels probables et improbables dans le noyau ?