我正在使用EXT2文件系统,并在最近两天试图找出如何创建符号链接。从http://www.nongnu.org/ext2-doc/ext2.html#DEF-SYMBOLIC-LINKS,"对于长度小于60字节的所有符号链接,数据存储在inode本身内;它使用通常用于存储指向数据块的指针的字段。这是一个值得进行的优化,因为我们避免为符号链接分配一个完整的块,并且大多数符号链接长度少于60个字符"
要在/ link1到/ source创建一个sym链接,我创建一个新的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(root inode)中的目录条目,其属性为24," link1",文件类型为EXT2_FT_SYMLINK。
名为" link1"的链接得到了创建,但它是一个目录,当我点击它时,它会转到" /"。我想知道我做错了什么......
答案 0 :(得分:1)
一个(非常)迟到的响应,但仅仅因为符号链接的数据在块指针中并不意味着文件大小为 0!您需要将符号链接的 inode 中的 i_size
字段设置为等于路径的长度