当您在linux中复制文件(使用contex菜单复制命令)时,linux是否创建了文件的硬链接?另外,如果您删除原始文件,而不是硬链接,那么该文件仍然存在于内存中,但是它的指针被删除了呢?我很难用记忆来理解一些东西。要释放磁盘空间,需要删除两个文件,对吗?硬链接是否指向原始文件的内存位置?我以前看过“inode”这个词,现在我很安静,知道inode到底是什么。
发布于 2013-11-25 10:25:24
inode是除内容之外的所有文件数据。
一个目录包含一组名称和数字:“这个目录包含文件foo,它是这个驱动器上的文件号3,bar,它是文件号4,quux,17,即123,最后是ohmygod,77321341”。Inode编号3包含“该文件创建于1970年1月1日,最后一次修改于1990年1月1日,最后一次读取于1990年1月2日。它的大小为722字节,这些字节位于驱动器上的4k块号768123中”以及其他一些内容。
stat()系统调用显示需要多少块,以及几乎所有与inode相关的内容。
发布于 2013-11-25 10:07:39
复制不会创建硬链接,这将是破坏行为。硬链接只是指向同一个文件的额外的头等名称;通过一个名称修改文件(而不是像一些编辑器那样,将文件保存在临时名称下,然后移动它),在以另一个名称访问时,您也会看到文件中的更改。不是我期望的那样。
请注意,文件的第一个名称没有什么特别之处。所有的硬链接只是指向同一个文件。
删除指向文件的最后一个目录项后,可能仍有指向该文件的文件句柄打开(来自打开该文件的程序)。只要其中一个存在,该文件仍然存在,可以使用。它只是不能被以前没有这样做过的进程打开,因为它已经没有名字了。
当不再有指向文件的目录条目,并且没有程序对该文件具有打开句柄时,就再也无法到达该文件。因此,操作系统释放磁盘上的空间。
https://stackoverflow.com/questions/20189142
复制相似问题