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

C 如何在EXT2文件系统中创建符号链接,c,linux,filesystems,ext2,C,Linux,Filesystems,Ext2,我正在使用EXT2文件系统,在过去的两天里,我一直在尝试如何创建符号链接。From,“对于长度小于60字节的所有符号链接,数据存储在inode本身中;它使用通常用于存储数据块指针的字段。这是一个值得优化的优化,因为我们避免为符号链接分配完整的块,并且大多数符号链接长度小于60个字符” 为了在/link1到/source创建一个sym链接,我创建了一个新的inode,并说它得到了索引24。由于gdb中的i_块[0]显示“/dir2/source”),并将i_链接数设置为1,所以i_大小和i_块为0

我正在使用EXT2文件系统,在过去的两天里,我一直在尝试如何创建符号链接。From,“对于长度小于60字节的所有符号链接,数据存储在inode本身中;它使用通常用于存储数据块指针的字段。这是一个值得优化的优化,因为我们避免为符号链接分配完整的块,并且大多数符号链接长度小于60个字符”

为了在/link1到/source创建一个sym链接,我创建了一个新的inode,并说它得到了索引24。由于gdb中的i_块[0]显示“/dir2/source”),并将i_链接数设置为1,所以i_大小和i_块为0。然后,我在inode 2(根inode)创建了一个目录条目,其属性为24,“link1”,文件类型为EXT2\u FT\u SYMLINK


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

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

为什么要重新设计轮子?有一个
symlink()
函数用于以编程方式创建符号链接,它的优点是不依赖于文件系统的外部细节。嗨,John,我这样做是为了教育目的,并了解如何在后台创建符号链接。