2010-06-20 5 views
4

Je voulais savoir un moyen de savoir Wich est la taille du bloc du disque par une fonction ou une constante de compilateur C ..Comment trouver la taille de bloc du système de fichiers?

grâce

+5

Quel système d'exploitation? _____ – kennytm

+0

Voulez-vous dire la taille de bloc du système de fichiers? –

+0

disques taille de page ??? Voulez-vous dire la taille de la grappe? Cela dépendra du système de fichiers et des paramètres du système de fichiers/configuration – jdehaan

Répondre

13

Les informations vous concernant en utilisant le compilateur gcc est pas intéressant, puisque les compilateurs ne sont pas intéressés par la taille de bloc du système de fichiers, ils ne sont même pas conscients du fait qu'un système de fichiers peut exister ... la réponse est spécifique au système (MS Windows? GNU/Linux ou autre * nix/* nix OS?) ; sur Posix vous avez la fonction stat, vous pouvez l'utiliser pour avoir la struct stat qui contient le champ st_blksize (blocksize pour le système de fichiers E/S) qui pourrait être ce que vous êtes intéressé.

AJOUTER

Exemple

#include <sys/types.h> 
#include <sys/stat.h> 
#include <unistd.h> 
#include <stdio.h> 


int main() 
{ 
    struct stat fi; 
    stat("/", &fi); 
    printf("%d\n", fi.st_blksize); 
    return 0; 
} 

vous informe sur le système de fichiers utilisé sur/(racine); par exemple. pour moi, il produit 4096.

+0

Donc, dans Linux, je pourrais utiliser cette structure? Je suis vraiment désolé d'être un begginer. Pourriez-vous l'utiliser dans un exemple? –

+1

Commencer à lire par ex. http://linux.die.net/man/2/stat pour voir si c'est ce que vous voulez savoir – ShinTakezou

+0

Ok merci j'ai vraiment eu besoin de ça pour compléter un projet d'école sur les structures sur disque (arbre b +, hachage, etc) merci –

2

statvfs() rapports sur un système de fichiers. Stat() rapports sur un fichier donné. Presque toujours cela sera le même, mais puisque vous avez demandé le résultat d'un système de fichiers, la bonne réponse pour les systèmes POSIX est d'appeler statvfs().

+0

pas mal du tout, mais je me demande quand ces valeurs ne correspondent pas – ShinTakezou

+0

fstyp -v/dev/vx/dsk/r1sp1dbdg/sapdata31 vxfs Version: 5 f_bsize: 8192 f_frsize: 1024 –

+0

Je ne pouvais pas obtenir la sortie ci-dessus pour formater correctement. Pardon. - HPUX vxfs peut le montrer. –

-4

J'ai trouvé une autre façon de résoudre mon problème.

Une fonction de gcc renvoie la taille de la page.

Je résolu mon problème à l'aide getpagesize()

printf("%d\n",getpagesize()); 
+7

Taille de la page! = Taille de bloc FS – rpj

+2

Ceci est *** COMPLÈTEMENT MAUVAIS ***. –

Questions connexes