mrn Asked: 2023-07-07 17:43:58 +0800 CST2023-07-07 17:43:58 +0800 CST 2023-07-07 17:43:58 +0800 CST 符号链接是存储为文件还是目录中的条目? 772 我的问题与 Linux 文件系统中符号链接的实现方式有关。 它们是存储的常规文件(使用索引节点)还是只是目录中的特殊条目? 如果它们存储在文件系统中,它们如何与二进制文件区分开来?符号链接是否分配了特殊的幻数? linux 1 个回答 Voted Best Answer Stephen Harris 2023-07-07T18:14:34+08:002023-07-07T18:14:34+08:00 “这取决于”。 这取决于文件系统的实现以及链接的长度。 例如,在 ext4 上,如果符号链接的目标足够小(60 字节或类似的值),那么它将存储在 inode 本身中并且不使用数据块。然而,如果目标更大,则分配数据块并将内容存储在那里。 其他文件系统可能没有这个“存储在 inode 中”选项。 传统上,符号链接由 inode 的“mode”( ) 字段中的位确定st_mode,与“目录”、“字符设备”、“块设备”、“FIFO”、“Socket”的方式相同。通常,应用程序可以stat()对文件名(或类似的)执行 a 操作,然后S_ISLNK()对结果st_mode字段进行测试。
“这取决于”。
这取决于文件系统的实现以及链接的长度。
例如,在 ext4 上,如果符号链接的目标足够小(60 字节或类似的值),那么它将存储在 inode 本身中并且不使用数据块。然而,如果目标更大,则分配数据块并将内容存储在那里。
其他文件系统可能没有这个“存储在 inode 中”选项。
传统上,符号链接由 inode 的“mode”( ) 字段中的位确定
st_mode
,与“目录”、“字符设备”、“块设备”、“FIFO”、“Socket”的方式相同。通常,应用程序可以stat()
对文件名(或类似的)执行 a 操作,然后S_ISLNK()
对结果st_mode
字段进行测试。