笔记1-1: 实现一个简单的ls列出目录中的所有项目的程序

实现一个简单的ls列出目录中的所有项目的程序:

 

#include <apue.h>

#include <dirent.h>

 

int main(int argc, char *argv[])

{

   DIR    * dp;

   struct dirent * dirp;

 

   if (argc != 2)

      err_quit("usage : ls directory_name\n");

   

   if ((dp = opendir(argv[1])) == NULL)

      err_sys("cannot open directory %s\n", argv[1]);

 

   while ((dirp = readdir(dp)) != NULL)

      printf("%s\n", dirp->d_name);

 

   closedir(dp);

   return 0;

}

 

opendir()函数打开一个目录,返回一个指向DIR结构的指针,如果打开失败则返回NULL

函数原型:

DIR*opendir(const char *path);

 

循环调用readdir()函数可以读出DIR结构指向的目录的每个目录项。readdir()成功的话,返回一个目录项结构struct dirent的指针,失败则返回NULL

函数原型:

struct dirent * readdir(DIR * dir);

 

closedir()函数用于关闭参数dir所指的目录流。关闭成功则返回0,失败返回-1

函数原型:

int closedir(DIR *dir);

 

注意:目录文件作为一种文件,在打开必须关闭,否则会由于文件的进程打开文件过多而不能打开新的文件。因此opendir函数和closedir函数同样是配对出现的。

 

注:上面函数功能,在Windows平台下可使用_findfirst(), _findnext(), _findclose() 函数代替。

 

 

 

 

 

 

posted on 2013-05-21 14:08  gradliang  阅读(137)  评论(0编辑  收藏  举报

导航