Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1608353
  • 博文数量: 695
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4027
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-20 21:22
文章分类

全部博文(695)

文章存档

2018年(18)

2017年(74)

2016年(170)

2015年(102)

2014年(276)

2013年(55)

分类: 网络与安全

2013-12-13 18:06:09


点击(此处)折叠或打开

  1. int travel(char *name)
  2. {
  3.    struct stat buf;
  4.    bzero(&buf,sizeof(buf));
  5.    char temp[256]; //保存当前路径
  6.    int n=stat(name,&buf);
  7.   if(S_ISREG(buf.st_mode)!=0)
  8.    {
  9.        printf("文件:%s\n",name);
  10.        return 0;
  11.    }
  12.   else if(S_ISDIR(buf.st_mode)!=0)
  13.      {
  14.         printf("文件夹:%s\n",name);
  15.         DIR *d=NULL;
  16.         d= opendir(name);
  17.         struct dirent *dp=NULL;
  18.          while((dp=readdir(d))!=NULL)
  19.           {
  20.              if(strcmp(dp->d_name,".")==0||strcmp(dp->d_name,"..")==0)
  21.                 continue;
  22.              
  23.              bzero(temp,256);
  24.              strcpy(temp,name);
  25.              strcat(temp,"/");
  26.              strcat(temp,dp->d_name);
  27.              travel(temp);
  28.             
  29.           }
  30.         return 0;
  31.      }
  32. }


只是简单判断了下普通文件和目录文件
还可根据下面的文件类型详细遍历:
1、S_IFMT 0170000 文件类型的位遮罩
2、S_IFSOCK 0140000 scoket
3、S_IFLNK 0120000 符号连接
4、S_IFREG 0100000 一般文件
5、S_IFBLK 0060000 区块装置
6、S_IFDIR 0040000 目录
7、S_IFCHR 0020000 字符装置
8、S_IFIFO 0010000 先进先出
9、S_ISUID 04000 文件的 (set user-id on execution)位
10、S_ISGID 02000 文件的 (set group-id on execution)位
11、S_ISVTX 01000 文件的sticky 位
12、S_IRUSR (S_IREAD) 00400 文件所有者具可读取权限
13、S_IWUSR (S_IWRITE)00200 文件所有者具可写入权限
14、S_IXUSR (S_IEXEC) 00100 文件所有者具可执行权限
15、S_IRGRP 00040 用户组具可读取权限
16、S_IWGRP 00020 用户组具可写入权限
17、S_IXGRP 00010 用户组具可执行权限
18、S_IROTH 00004 其他用户具可读取权限
19、S_IWOTH 00002 其他用户具可写入权限
20、S_IXOTH 00001 其他用户具可执行权限上述的文件类型在 POSIX 中定义了检查这些类型的宏定义
21、S_ISLNK (st_mode) 判断是否为符号连接
22、S_ISREG (st_mode) 是否为一般文件
23、S_ISDIR (st_mode) 是否为目录
24、S_ISCHR (st_mode) 是否为字符装置文件
25、S_ISBLK (s3e) 是否为先进先出
26、S_ISSOCK (st_mode) 是否为socket 若一目录具有sticky 位 (S_ISVTX), 则表示在此目录下的文件只能被该文件所有者、此目录所有者或root 来删除或改名.

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