谢谢您这么详细的回答 在 2010-10-14 10:37:49,"Gurgle Chen" <gurgle@xxxxxxxxxxxxxx> 写道: > >> 本人刚学linux C编程,刚加入该邮件列表,希望以后能向各位学习 > >不好意思,这段时间忙于其他事情,疏于回复邮件列表了。 >欢迎您加入我们的邮件列表进行讨论。 > > >> 文件长格式的第二项链接数的意义?可不可以理解为这个文件里的程序“调用”了其他的文件或目录呢? > >一般不是这样理解的。 >首先说一下,在 ls -l 输出结果列表中的第二项表示文件的link count,即连接计数。 > > > > >你如果熟悉文件系统在Linux中的实现就会知道,其实Linux每一个文件在文件系统内部管理的时候,都会 >给其分配一个唯一的数据结构,称为 inode。在inode中记录了这个文件的内容保存在磁盘的哪里哪里之类。 > >inode 是文件系统内部使用的,而作为用户的我们如果要读写一个文件,那必须提供出来文件的名字。 >在用 read 系统调用去读一个名为 "./tmp" 的文件的时候,它内部会将这个名字转换成对 inode 的引用, >继而读出文件的内容。 > >在一个文件系统范围内,我们可以给一个inode指派多个名字,比方"./tmp"和"./tmp.hard"等,这样的话, >在文件系统内部这两个名字都指向了同一个inode,实际上也就指向了同一个文件。所以,显然,你可以用 >"./tmp" 去write一些内容。写完后,你可以去 read "./tmp.hard",从而能读出你之前写进去的内容。 > >所以,上面说的连接计数,其实指的是指向同一个 inode 的名字的数目,也就是一个inode的硬连接的数目。 >文件系统内,给每一个inode 都分配一个编号,你可以用 ls -il 查看它。 > >说了这么多,我们做些测试就能明白: > >[yihect@juliantec ~]$ echo 1234 > ./tmp >[yihect@juliantec ~]$ ls -il ./tmp >594476 -rw-rw-r-- 1 yihect yihect 5 Oct 14 09:45 ./tmp >[yihect@juliantec ~]$ ln ./tmp ./tmp.hard >[yihect@juliantec ~]$ ls -il ./tmp ./tmp.hard >594476 -rw-rw-r-- 2 yihect yihect 5 Oct 14 09:45 ./tmp >594476 -rw-rw-r-- 2 yihect yihect 5 Oct 14 09:45 ./tmp.hard >[yihect@juliantec ~]$ >[yihect@juliantec ~]$ >[yihect@juliantec ~]$ cat ./tmp >1234 >[yihect@juliantec ~]$ >[yihect@juliantec ~]$ >[yihect@juliantec ~]$ echo abcd >> ./tmp >[yihect@juliantec ~]$ >[yihect@juliantec ~]$ >[yihect@juliantec ~]$ cat ./tmp.hard >1234 >abcd > >简述下上面的测试过程:以 "./tmp" 问名称新建一个文件,这个文件对应的 inode 编号为 594476。 >接下来使用 ln 建立一个硬连接 ./tmp.hard. 注意用 ls -il 查看这两个名字都指向同一个 inode, >并且连接计数从原来的1变成了2。最后我就是做了些读写的测试,表明操作的是同一个文件。 > >另外,说一下,当一个 inode 的计数降低到了0的时候,文件系统内部就会释放这个inode所占用的内存, >并在磁盘中回收原先用于储存这个文件内容的扇区。那我们如何测试以降低连接计数,可以使用 rm 删除文件。 > >[yihect@juliantec ~]$ ln ./tmp ./tmp.hard2 >[yihect@juliantec ~]$ ls -il ./tmp ./tmp.hard ./tmp.hard2 >594476 -rw-rw-r-- 3 yihect yihect 10 Oct 14 09:46 ./tmp >594476 -rw-rw-r-- 3 yihect yihect 10 Oct 14 09:46 ./tmp.hard >594476 -rw-rw-r-- 3 yihect yihect 10 Oct 14 09:46 ./tmp.hard2 >[yihect@juliantec ~]$ rm ./tmp >[yihect@juliantec ~]$ ls -il ./tmp.hard ./tmp.hard2 >594476 -rw-rw-r-- 2 yihect yihect 10 Oct 14 09:46 ./tmp.hard >594476 -rw-rw-r-- 2 yihect yihect 10 Oct 14 09:46 ./tmp.hard2 > >与硬连接对应的是软件连接,你可以查查看什么是软连接。 > 濡傝閫€鍑鸿繖涓垪琛紝璇峰彂閭欢缁欑鐞嗗憳銆?