(本文由 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
阅读(1713) | 评论(1) | 转发(0) |