我用 C 语言编写了一个小程序,成功打开了一个文件,然后调用 sleep 20 秒。在那 20 秒内,我使用 shell 中的 rm 删除了打开的文件。睡眠后,程序成功读取数据并将其打印在屏幕上。
int bytes_read;
FILE *fp = fopen("/tmp/file", "r");
sleep(20);
bytes_read = fread(buf, 1, 5, fp);
buf[bytes_read] = '\0';
printf("%s", buf);
我希望它读取 0 个字节,但它会打印文件中的实际数据。这种行为背后的解释是什么。