18.1-2 i-node 和链接
i-node
i 节点一般写作 i-node,中间有个短横线。i-node 表的编号开始于 1,因为 0 用来表示未使用的条目,然后 i-node 1 用来记录文件系统的坏块,i-node 2 用来记录根目录,即 /。由于可能有多个路径不同、名称不同的文件(通过硬链接)指向同一个 i-node,因此 i-node 中并不记录本文件的名称。
符号链接
符号链接的所有权和权限在大多数情况下会被忽略。仅在符号链接所在目录具有粘着位,又要删除或者重命名符号链接时,才会考虑符号链接本身的所有权。
符号链接解引用的次数是有限的,SUSv3 规定对路径中的每个符号链接部件至少 _POSIX_SYMLOOP_MAX
即 8 次。内核 2.6.18 之前,Linux 最多支持 5 次,2.6.18 时支持了 8 次。Linux 还规定一个完整路径中符号链接引用解除次数最多 40 次。
符号链接使用 symlink
创建,使用 readlink
读取。
link
和 unlink
(不会解除符号链接引用)
link
创建(硬)链接,unlink
解除链接(也就是删除文件)。SUSv3 规定 link
要解符号链接引用,但是 Linux 并没有这样实现。现在 SUSv4 规定 link
调用是否解除链接由实现定义。