Chinaunix首页 | 论坛 | 博客
  • 博客访问: 898838
  • 博文数量: 194
  • 博客积分: 7991
  • 博客等级: 少将
  • 技术积分: 2067
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-09 22:03
文章分类

全部博文(194)

文章存档

2010年(8)

2009年(71)

2008年(109)

2007年(6)

我的朋友

分类: LINUX

2008-01-24 19:18:36

 
(本文由 song.xian-guang 原创,如果您觉得对您有帮助,请评论之,如需转载,请指明链接;作者保留所有权利, 禁止商业用途)
 
本文的灵感来源于以下知识:
Linux下的文件系统中,文件是由inode来标识的;
硬链接意思是说有多个名字对应同一个inode;
每一文件夹中都有两个特殊的子文件夹, “.”代表当前目录,而“..”代表上级目录,所谓代表,其实际意义是说,“.”实际上指向本目录所在的inode,而而“..”指向上级目录所在的inode。
 
分析:
一个目录的硬链接数的计算方法:1 + 1 + n
第一个1表示目录本身名称
第二个1表示本目录下“.”
n表示本目录下n个子目录中的n个“..”,因为他们都指向本目录
 
这样只要我们获取了本目录的硬链接数,然后减去2就是子目录的个数了:
 
 

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>

int main(int argc, char** argv)
{
        struct stat mystat;
        stat(argv[1], &mystat);
        printf("subdirectory count of %s is %d\n", argv[1], mystat.st_nlink - 2);

        return 0;
}

算一个方法吧,其实没什么用,玩呗。

sxg

 

 

阅读(1666) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-11-23 23:15:19

硬链接是不能建立硬链接的......