J'ai ouvert un flux de fichier vers un très gros fichier en utilisant fopen. Avant d'effectuer une opération de lecture sur ce flux, j'ai supprimé le fichier en utilisant unlink(). Et encore, j'ai été capable de lire tout le fichier.La fread est-elle possible après la suppression d'un fichier?
Je suppose qu'il existe un tampon associé au flux, qui contient les données du fichier. Mais évidemment, ce tampon aura une limite. C'est la raison pour laquelle j'ai choisi a_big_file dont la taille était 551126688 octets ou 526MB.
Je veux savoir quelle est la raison exacte derrière cela. Voici le code de test que j'ai utilisé.
#include <stdio.h>
#include <unistd.h>
int main(){
FILE *fp;
long long int file_size = 0;
int bytes_read = 0;
char buf[1];
fp = fopen("a_big_file", "r");
unlink("a_big_file");
while(0 != (bytes_read = fread(buf, 1, 1, fp))){
file_size += bytes_read;
}
printf("file_size is %llu\n", file_size);
return 0;
}
Sortie: file_size est 551126688
Jeez ... mes yeux sont de se dégrader. Je pensais que "FRED est possible ..." – StingyJack
FRED était l'éditeur pour Macintosh Common Lisp, et Digitool n'a jamais réussi à passer à OSX. Malheureusement, je ne sais pas que c'est encore possible sur un Macintosh moderne, même si une grande partie de MCL survit. –