《unix高级环境编程》文件和目录——目录操作

目录基本操作

目录的基本操作包括打开目录opendir、读取目录readdir、关闭目录closedir等操作,如下说明:

/********************
 * 目录操作:
 * 1、打开目录opendir
 *
 *  函数功能:打开一个目录;
 *  返回值:若成功返回一个目录指针,若出错则返回NULL指针;
 *  函数原型:
 *  #include <sys/types.h>
 *  #include <dirent.h>
 *  DIR *opendir(const char *pathname);
 *
 * 2、读一个目录readdir
 *
 *  函数功能:读取目录
 *  返回值:若成功返回指针,若在目录结尾或出错则返回NULL;
 *  函数原型:
 *  #include <unistd.h>
 *  #include <dirent.h>
 *  struct dirent *readdir(DIR *dp);
 *
 * 3、重设与dp关联的目录中的位置
 *
 *  函数功能:重设与dp关联的在目录中的位置;
 *  没有返回值;
 *  函数原型:
 *  #include <sys/types.h>
 *  #include <dirent.h>
 *  void rewinddir(DIR *dp);
 *
 * 4、dp关联的在目录的当前位置return current location in directory stream.
 *
 * 函数功能:获取与dp关联的在目录中的当前位置;
 *  返回值:若成功返回与dp关联的在目录中的当前位置,若出错返回-1;
 *  函数原型:
 *  #include <dirent.h>
 *  off_t telldir(DIR *dp);
 *
 * 5、The seekdir() function sets the location in the  directory
 *    stream  from  which  the  next  readdir() call will start.
 *    seekdir() should  be  used  with  an  offset  returned  by telldir().
 *
 *   函数功能:设置下一个readdir调用在目录的位置
 *    无返回值
 *    函数原型:
 *    #include <dirent.h>
 *    void seekdir(DIR *dp, off_t offset);
 *
 * 6、关闭一个已打开的目录
 *
 *  函数功能:关闭一个已打开的目录
 *  返回值:若成功返回0,若出错返回-1;
 *  函数原型:
 *  #include <sys/types.h>
 *  #include <dirent.h>
 *  int closedir(DIR *dp);
 *  **********************************/

目录信息结构

/************************************
 * struct dirent结构信息
 * *******/
   struct dirent
    {
        long d_ino;                 /* inode number */
        off_t d_off;                /* offset to this dirent */
        unsigned short d_reclen;    /* length of this d_name */
        char d_name [NAME_MAX+1];   /* file name (null-terminated) */
    };

目录创建、删除和更改工作目录

/***********
 * 目录创建
 * 函数功能:创建一个空目录
 * 返回值:若成功则返回0,若出错则返回-1;
 * 函数原型:
 * #include <sys/stat.h>
 * int mkdir(const char *pathname, mode_t mode);
 * 说明:
 * 此函数创建一个新的空目录,其中.和..目录项是自动创建的。
 * 所指定的文件访问权限mode由进程的文件模式创建屏蔽字修改。
 *
 * 删除空目录
 * 函数功能:删除一个空的目录
 * 返回值:若成功则返回0,若出错则返回-1;
 * 函数原型:
 * #include <unistd.h>
 * int rmdir(const char *pathname);
 * 说明:
 * 如果调用该函数使目录的链接数为0,且没有其他进程打开该目录,则释放该目录空间。
 * 若链接数为0,此时有进程打开该目录,在进程关闭前不会释放目录空间。
 * ***************/

/*************************
 * 更改当前工作目录。
 * 函数功能:更改当前的工作目录;
 * 返回值:若成功则返回0,若出错则返回-1;
 * 函数原型:
 * #include <unistd.h>
 * int chdir(const char *pathname);
 * int fchdir(int filedes);
 * 说明:
 * 这两个函数分别用pathname或打开文件描述符来指定当前的工作目录。
 * **********/
/*************
 * 获取当前工作目录的绝对路径
 * 函数原型:
 * #include <unistd.h>
 * char *getcwd(char *buf, size_t size);
 * ***************/
参考资料

《unix高级环境编程》


你可能感兴趣的:(目录操作,Unix编程)