[~programmation] fichiers à trous support kernel/FS

fichiers à trous support kernel/FS [~programmation] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 30-01-2003 à 09:54:19    

pour ceux qui connaissent les fichiers à trous, je voudrais savoir si le support est assuré par le noyau ou si ce la dépend du système de fichier.
 
sur mon systeme (2.4.19 ext3), cela fonctionne parfaitement, c'est à dire que la taille logique est bien supérieur à la taille physique. mais quand est il des autres systemes  :??:  
 
voici un source C (pas blindé, mais facile à comprendre). si vous etes curieux...

Code :
  1. #include <stdio.h>
  2. #include <sys/stat.h>
  3. #include <sys/types.h>
  4. static const char* filename="taisteu.trous";
  5. int main()
  6. {
  7.   FILE *fp=NULL;
  8.   struct stat stats;
  9.   fp=fopen(filename, "w" );
  10.   fseek(fp, 100000000, SEEK_SET);
  11.   fputs("Hello World!", fp);
  12.   fclose(fp);
  13.   stat(filename, &stats);
  14.   printf("taille = %ld\n"
  15.          "%lu blocks de %lu\n"
  16.          "Merci :jap:\n",
  17.          stats.st_size, stats.st_blocks, stats.st_blksize);
  18.   remove(filename);
  19.   return 0;
  20. }

Reply

Marsh Posté le 30-01-2003 à 09:54:19   

Reply

Marsh Posté le 30-01-2003 à 11:19:36    

ben oui, ca fait partie des specifications les plus primitives de unix alors :jap:

Reply

Marsh Posté le 30-01-2003 à 13:39:02    

excellent !

Reply

Marsh Posté le 30-01-2003 à 15:11:55    

Enfin, c'est pas vraiment un "spécification" mais plutot une conséquence directe de la gestion des fichiers dans unix.

Reply

Marsh Posté le 31-01-2003 à 04:50:55    

Ces 'trous' sont transparents pour l'utilisateur, non ?
 
Ou alors on peut avoir une erreur en lisant dans un trou ?


Message édité par Musaran le 01-02-2003 à 06:04:31

---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 31-01-2003 à 09:00:32    

ils sont completement transparents et ne déclenchent pas d'erreur. le systeme allouera l'espace disque quand nécessaire.
d'ailleurs ls renvoie la taille logique, il faut passer par du pour se rendre compte que le fichier comporte des trous et a une occupation physique inférieure

Reply

Marsh Posté le 31-01-2003 à 10:26:08    

A ce sujet, il y a de bonnes info sur les fichiers "sparse" dans la doc de cp. En effet, si on code une implementation simple de cp, ce dernier va effectivement enlever les trous des fichiers. C'est pour ça que ce dernier a prévu en interne des heuristique de detection de trous :D
 
"man cp" option sparse

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed