Comment obtenir la taille du fichier sur le disque sous linux?
Je veux trouver la taille du fichier sur le disque sur le système d'exploitation linux .
Je connais la commande pour le faire:
du-s-h
Est-il possible de le trouver à l'aide de code c/c++?
Ma compréhension est que le disque dur est un périphérique bloc donc bien que je vous écris juste 10 octets dans un fichier, le noyau va allouer des blocs pour le fichier en termes de taille_bloc .j'.e. (512 octets) . Supposons que le disque est d'avoir la taille totale de 1 KO et nous avons créé 2 fichiers de 10bytes chaque disque est plein ou pas ? Suis-je la corriger ?
Sur la plupart des systèmes de fichiers Linux utiliser une taille de bloc de 4 KO (qui est, chaque fs bloc se compose de 8 blocs de 512 octets sur l'appareil), donc pas de blocs d'ajustement 1 ko sur un système de fichiers (en faisant abstraction surcharge de métadonnées etc.).
je sais, je l'ai donner 1 à titre d'exemple seulement . merci j'ai eu ma réponse.
Sur la plupart des systèmes de fichiers Linux utiliser une taille de bloc de 4 KO (qui est, chaque fs bloc se compose de 8 blocs de 512 octets sur l'appareil), donc pas de blocs d'ajustement 1 ko sur un système de fichiers (en faisant abstraction surcharge de métadonnées etc.).
je sais, je l'ai donner 1 à titre d'exemple seulement . merci j'ai eu ma réponse.
OriginalL'auteur Ashish | 2011-04-26
Vous devez vous connecter pour publier un commentaire.
Oui, utiliser le
stat(2)
appel système:Notez que pour obtenir l'effectif de taille de disque, vous aurez besoin de regarder à st_blocks*512, pas st_size
+1 pour une impression correcte des grands types d'entiers!
stat ne donne pas la même taille, ce qui peut donner par du-s-h fichier.dat.
st_size est la taille du fichier, c'est le nombre d'octets qu'il contient. La quantité d'espace que le fichier prend de la place sur le disque est donnée par st_blocks*512, comme Hasturkun mentionné; c'est la taille que 'du'.
OriginalL'auteur Blagovest Buyukliev