gpt4 book ai didi

c - 从已删除的文件中读取

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:15:16 24 4
gpt4 key购买 nike

我用 C 编写了一个小程序,我成功地打开了一个文件,然后调用了 sleep 20 秒。在那 20 秒内,我从 shell 中使用 rm 删除了打开的文件。 sleep 后程序成功读取数据并将其打印在屏幕上。

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 个字节,但它会打印文件中的实际数据。这种行为背后的解释是什么。

最佳答案

在 linux 和其他 POSIX 系统中,您不会删除文件。您只需从目录中删除一个 inode 。只要文件上有打开的文件描述符,它就不会被删除。仅当 inode 的最后一个链接和最后一个打开的文件描述符消失时。

关于c - 从已删除的文件中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14146518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com