Я открыл поток файлов в очень большой файл, используя fopen.
Перед выполнением любой операции чтения в этом потоке я удалил файл, используя unlink ().
И все же я смог прочитать весь файл.
Я предполагаю, что с потоком связан буфер, в котором хранятся данные файла. Но очевидно, что у буфера будет предел. По этой причине я выбрал файл a_big_file, размер которого был 551126688 байт или 526 МБ.
Я хочу знать, какова точная причина этого.
Вот тестовый код, который я использовал.
#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;
}
Выход:
размер_файла 551126688