Linux 之目录操作

(1)打开/关闭目录文件

#include 
DIR* opendir(const char* dirname);
int closedir(DIR* dirp);

opendir()函数用于打开一个目录文件,其中dirname为目录路径,执行成功,返回一个目录流指针,失败返回NULL
closedir()函数用于关闭指定的目录流,成功返回0,失败返回-1

(2)读取目录内容

#include 
struct dirent* readdir(DIR* dirp);
int readdir_r(DIR* dirp,struct dirent* entry,struct dirent ** result);

其中struct dirent定义如下:

// from dirent.h
struct dirent
{
    long ino;                    //目录中某文件的innode值
    _kerbel_off_t d_off;         // 从目录开始到当前目录条的距离
    unsigned short d_reclen;     // 目录中某文件名的长度
    char d_name[256];            //  目录中某文件名
}

readdir()函数执行成功则返回一个指向struct dirent的结构体,,如果到达目录结尾,或失败,则范湖NULL。
readdir_r()函数在多线程编程中相对安全,且此函数第一个参数为打开的目录指针,它将初始化第二个参数引用的struct dirent结构,以表示第一个参数所引用的目录流的当前位置,并将所在位置的信息存储在第三个参数中。函数执行成功,将返回目录流中的一个文件信息,到达目录尾在返回0,执行失败返回-1。

(3)定位目录位置

long int telldir(DIR* dirp);             //返回目录流的当前位置
void seekdir(DIR* dirp,long int loc);   // 设置下一个readdir()位置
void rewinddir(DIR* dirp);              //将目录流的位置重置到目录的开头

(4)当前工作路径操作

char* getcwd(char* buf,size_t size); //获取当前工作路径的绝对路径到buf中,并返回buf
int chdir(const char* path);//修改当前进程的环境变量的当前工作路径,成功返回0,失败返回-1

你可能感兴趣的:(Linux)