我用fopen打開了一個非常大的文件流。 在對該流執行任何讀取操作之前,我使用unlink()刪除了該文件。 而且,我仍然可以閱讀整個文件。文件被刪除後,fread可能嗎?
我猜測有一個與流相關的緩衝區,它保存着文件的數據。但顯然緩衝區會有一個限制。這就是我選擇大小爲551126688字節或526MB的a_big_file的原因。
我想知道背後的確切原因是什麼。 這是我使用的測試代碼。
#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;
}
輸出: FILE_SIZE是551126688
哎呀......我的眼睛越來越不好。我認爲這說「FRED可能......」 – StingyJack 2009-02-03 13:51:22
FRED是Macintosh Common Lisp的編輯,Digitool從未管理過遷移到OSX。令人遺憾的是,我不知道在現代Macintosh上它仍然是可能的,儘管許多MCL仍然存在。 – 2009-02-03 15:06:12