您的位置:首页 > 其它

用c程序验证/目录下面..和.是相同的

2014-09-15 19:52 78 查看
在UNIX下面的文件夹中总有两个文件..和.,这两个分别代表了本目录和上一级的目录。而在根目录中,由于根目录没有上一级的目录,所以根目录中的..和.是相同的。这个要怎么验证么,主要就是通过查看inode,在ext系列文件系统中,inode唯一地标识了一个文件或者一个文件夹。那么我想要通过c程序来验证,该怎么做呢,代码如下:

#include<sys/types.h>
#include<dirent.h>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
int main(int argc,char *argv[])
{
DIR             *dp;                      //打开目录的句柄
struct dirent   *dirp;                    //保存打开目录信息的结构

if((dp=opendir("/")) == NULL)             //打开根目录,如果无法打开,则输出错误信息
{
printf("Can't open the directory /!\n");
exit(-1);
}
while((dirp=readdir(dp)) != NULL)         //从根目录中不断读取文件名
{
if((strcmp(dirp->d_name,".")==0) || (strcmp(dirp->d_name,"..")==0))   //如果遇到..和.文件,则输出inode和文件名
{
printf("%s's inode is %d\n",dirp->d_name,dirp->d_ino);
}
}
closedir(dp);                             //关闭目录句柄
return 0;
}


这个思路主要是这样的,打开一个目录,然后不断读取这个目录中的文件名,如果文件名是.或者..的话,那么就把这个文件的名字和它的inode一起输出,这样就能够看到..和.这两个文件的inode是相同的了,运行结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐