实验六
编写程序完成以下功能:
1.递归遍历/home目录,打印出所有文件和子目录名称及节点号。
2.判断文件类型,如果是子目录,继续进行递归遍历,直到遍历完所有子目录为止。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<dirent.h>
#include<unistd.h>
static int n=-1;
void type()
{
int i;
for(i=0;i<n;i++)
{
printf("----");
}
}
void display(char *d)
{
//n++;
char p[100];
struct stat statBuf;
DIR *dir;
struct dirent *dirp;
if(!(dir=opendir(d)))
{
perror("open fail:");
exit(-1);
}
while((dirp=readdir(dir))!=NULL)
{
if(dirp->d_name[0]=='.')
{
continue;
}
//type();
sprintf(p,"%s/%s",d,dirp->d_name);
lstat(p,&statBuf);
//printf("d:%s\tp:%s\n",d,p);
if(S_ISDIR(statBuf.st_mode))
{
printf("dir:%s\n",dirp->d_name);
display(p);
}
else
{
printf("file:%s\t%ld\n",dirp->d_name,statBuf.st_ino);
}
}
//n--;
}
int main()
{
printf("/home\n");
display("/home");
return 0;
}