UNIX目录访问操作

1、目录访问相关函数:

  DIR* opendir (const char * path );
  struct dirent* readdir(DIR *dirptr) ;参数是一个指向dirent 结构的指针。DIR是目录指针,读取一个目录,读取完毕返回一个空指针。
  int closedir(DIR *dirptr);

2、目录信息结构体如下所示:

struct dirent
{
    long d_ino;  //inode number  i结点号码
    off_t d_off; //偏移(当前文件在目录中的偏移位置)
    unsigned short d_reclen; //文件名称的长度
    char d_name[NAME_MAX+1]; //filename 文件名称
}
示例:实现一个小型ls简单程序:

 1 #include <sys/types.h>
 2 #include <sys/stat.h>
 3 #include <fcntl.h>
 4 #include<errno.h>
 5 #include<unistd.h>
 6 #include<stdio.h>
 7 #include<stdlib.h>
 8 #include<string.h>
 9 #include<dirent.h>
10 //#define ERR_EXIT(m)  (perror(m),exit(EXIT_FAILURE))
11 #define ERR_EXIT(m)\
12     do\
13     {\
14         perror(m);\
15         exit(EXIT_FAILURE);\
16     }while(0)  //宏要求一条语句
17 int main(void)
18 {
19     DIR *dir;
20     //opendir()打开一个路径
21     if((dir=opendir("."))==NULL)//打开当前目录
22         ERR_EXIT("opendir error");
23     struct dirent *de;
24     while((de=readdir(dir))!=NULL)
25     {
26         if(strncmp(de->d_name,".",1)==0)  //隐藏文件.和..  第一个字符是点号隐藏
27             continue;
28         printf("%s\n",de->d_name);
29     }
30     closedir(dir);
31     exit(EXIT_SUCCESS);
32     return 0;
33 }

 



posted on 2018-01-13 21:44  wsw_seu  阅读(173)  评论(0编辑  收藏  举报

导航