所谓链接,就是共享文件与访问共享文件的文件之间建立起得联系。
我们知道,在linux中,创建文件时,系统为其分配了一个inode,inode是描述文件特性的数据结构,有自己的编号。当文件系统启动时,在内存中创建一个数组,inode编号就放在数组中,以便于快速进行文件访问。和inode编号一起的还有文件名。inode的信息中并不包括实际文件名和实际数据,而是
文件类型,大小,属主关系,访问权限,时间轴以及文件数据块在磁盘上的地址。
硬链接创建一个指针,指针指向inode,当修改连接的文件时,相应的也会修改源文件,这和指针指向同一地址的道理是相同的。只有当指向该inode的指针树为0时,源文件才会被删除。硬链接不能跨文件系统创建,也不能创建不存在的文件。大小与源文件一致。本质上是一致的。
软连接创建的指针并不指向inode,而是指向文件路径名。所以删除软连接并不会影响源文件。连接数目也不会增加,因为他们是属于完全不同的文件,文件大小不一致,软件的这种符号连接,大小只有文件路径名。当打开这个文件连接时,会先访问这个文件路径名,从中找到inode,再从inode中访问源文件。
这是我学习所得,欢迎指正。