inode是linux中的保存文件属性的结构,文件的实际内容存放在block中。文件的block的地址信息存储在inode中。
可以使用命令ll -di file_path查看文件/目录的inode。(操作系统查找文件时,也是根据文件的目录一级一级查找inode得到的。当前目录的子目录信息所在的block信息也在当前目录的inode中)
文件的inode中存放文件的block信息,block信息是文件的实际block地址还是另一个inode的block信息决定了该文件是对文件的一个物理链接还是符号链接。 下图1是一副较好的说明图:
实际编程中,在进程里打开一个文件返回整型文件描述符并不是一个inode,而是系统中一个文件表格的下标,该文件表格中的元素存储了文件的inode位置。在fork子进程时,仅仅是将高下标复制给了子进程,而inode和系统的文件表格都是一样的。也就是说子进程与父进程对文件是共享的。
fd_father->文件表格->inode->block
^
fd_son--------
硬链接:多个文件名可以指向同一个inode。
图1:
物理链接
符号链接
原文:http://my.oschina.net/u/2368952/blog/521647