C语言 如何在 EXT2 文件系统中创建符号链接



我正在使用 EXT2 文件系统,并花了最后两天试图弄清楚如何创建符号链接。从 http://www.nongnu.org/ext2-doc/ext2.html#DEF-SYMBOLIC-LINKS,"对于所有长度小于 60 字节的符号链接,数据存储在索引节点本身中;它使用通常用于存储指向数据块的指针的字段。这是一个值得的优化,因为它我们避免为符号链接分配一个完整的块,并且大多数符号链接的长度不到60个字符。

要在/link1 处创建一个指向/source 的符号链接,我创建了一个新的 inode 并说它得到索引 24。由于它是<60个字符,我将字符串"/source"放在i_block[0]字段开始(因此在gdb中打印new_inode->i_block[0]显示"/dir2/source"),并将i_links_count设置为1,i_size和i_blocks设置为0。然后,我在 inode 2(根 inode)上创建了一个目录条目,其属性为 24、"link1"和文件类型 EXT2_FT_SYMLINK。

创建了一个名为"link1"的链接,但它是一个目录,当我单击它时,它会转到"/"。我想知道我做错了什么...

一个(非常)晚的响应,但仅仅因为符号链接的数据在块指针中,并不意味着文件大小为 0!您需要将符号链接索引节点中的i_size字段设置为等于路径的长度

最新更新