Je n’avais pas tilté que le fichier était virtuel...
#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include <fcntl.h>#define File "/proc/meminfo"intmain(){intfd=open(File,O_RDONLY);if(fd==-1){fprintf(stderr,"Ouverture de "File" impossible avec open\n");}else{structstatl_stat;intrc;rc=fstat(fd,&l_stat);if(rc==-1){perror("fstat error");}else{printf("Fichier : "File" : taille : %d\n",l_stat.st_size);}}return0;}
$ ./a.out
Fichier : /proc/meminfo : taille : 0
$
:-(
La fonction read renvoie le nombre d’octets réellement lus. En définissant un grand buffer ça devrait marcher. En plus, comme Linux n’alloue les pages que quand elles sont utilisées, on peut allouer 1M sans avoir peur.
#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include <fcntl.h>#define File "/proc/meminfo"intmain(){intfd=open(File,O_RDONLY);if(fd==-1){fprintf(stderr,"Ouverture de "File" impossible avec open\n");}else{char*l_buffer;/* 1M octet est sufisant et pas réellement alloué par linux */l_buffer=malloc(1000000);ssize_tsize;size=read(fd,l_buffer,1000000);/* size contient la taille réellement lue */printf("Fichier : "File" : taille : %d\n",size);free(l_buffer);}return0;}
[^] # Re: man fstat
Posté par Anthony Jaguenaud . En réponse au message taille du "fichier" /proc/meminfo. Évalué à 2.
Je n’avais pas tilté que le fichier était virtuel...
:-(
La fonction
readrenvoie le nombre d’octets réellement lus. En définissant un grand buffer ça devrait marcher. En plus, comme Linux n’alloue les pages que quand elles sont utilisées, on peut allouer 1M sans avoir peur.