gpt4 book ai didi

perl - 取消链接究竟是如何工作的?

转载 作者:行者123 更新时间:2023-12-04 22:04:37 25 4
gpt4 key购买 nike

我很难理解这是如何工作的。

看来unlink()将删除引用文件数据的 inode,但实际上不会删除数据。如果是这种情况,

a) 数据会怎样?大概它不会永远存在,或者人们会一直用完磁盘空间。其他东西最终会在没有关联 inode 的情况下删除数据,还是什么?

b)如果数据没有发生任何事情:我怎样才能真正删除它?如果某些事情自动发生在它身上:我怎样才能在命令中发生这种情况?

(辅助问题:如果 shell 命令 rmunlink 基本上做同样的事情,正如我在这里读到的其他问题一样,而 Perl unlink 只是另一个调用,那么模块的意义何在像 File::Remove ,这似乎又做了同样的事情?我意识到“有不止一种方法可以做到这一点”,但这似乎是“不止一种说法”的情况,与“它”总是指相同的操作。)

简而言之:我可以确保删除文件实际上会立即释放其磁盘空间吗?

最佳答案

磁盘上的每个 inode 都有一个引用计数——它知道有多少地方引用它。目录条目是一个引用。可以存在对同一 inode 的多个引用。 unlink删除引用。当引用计数为零时,inode 不再使用,可能会被删除。这就是有多少东西可以工作,例如硬链接(hard link)和快照。

特别是 - 打开的文件句柄是一个引用。因此,您可以打开一个文件,取消链接,然后继续使用它——它只会在文件句柄关闭后才会被实际删除(前提是引用计数降至零,并且在其他任何地方都没有打开/硬链接(hard link))。

关于perl - 取消链接究竟是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26487027/

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