目录相关函数介绍
//改变目录或文件的访问权限
#include<sys/stat.h>
int chmod(const char* path,mode_t mode);//mode为八进制
//获取当前的工作路径
#include <unistd.h>
char *getcwd(char *buf,size_t size);//获取当前目录,相当与pwd命令,参数通常为(NULL,0);
说明:getcwd()函数:将当前的工作目录绝对路径复制到参数buf所指的内存空间,参数size为buf的空间大小. 在调用此函数时,
buf所指的内存空间要足够大,若工作目录绝对路径的字符串长度超过参数size大小,则回值NULL,errno的值则为ERANGE。
倘若参数buf为NULL,getcwd()会依参数size的大小自动配置内存(使用malloc()),如果参数size也为0,则getcwd()
会依工作目录绝对路径的字符串长度来决定所配置的内存大小,进程可以在使用完此字符串后自动利用free()来释放此空间。所以常用的形式:getcwd(NULL, 0);
//改变当前目录
int chdir (const char *path);//修改当前目录为参数指定的目录,即切换路径,相当与cd命令
//创建目录
#include <sys/stat.h>
#include <sys/types.h>
int mkdir(const char *pathname, mode_t mode);//mode为八进制
创建目录,mode是目录权限(最终要和~umask相与)
//rmdir 删除目录
#include <unistd.h>
int rmdir(const char *pathname);
//opendir/fdopendir //打开目录
DIR是一个结构体,是一个内部结构,用来存储读取目录的相关信息。
#include <sys/types.h>
#include <dirent.h>
DIR *opendir(const char *name);//打开一个目录,返回目录流
DIR *fdopendir(int fd);
//readdir 读目录
#include <dirent.h>
struct dirent *readdir(DIR *dirp);//读取目录的一项信息,返回一条记录项,,DIR*指针指向下一条记录项。
struct dirent {
ino_t d_ino; /* inode number */
off_t d_off; /* offset to the next dirent */
unsigned short d_reclen; /* length of this record */
unsigned char d_type; /* type of file; not supportedby all file system types */
char d_name[256]; /* filename */
};
readdir 每次返回一条记录项,,DIR*指针指向下一条记录项。
//rewinddir 重新定位到目录文件的头部
#include <sys/types.h>
#include <dirent.h>
void rewinddir(DIR *dirp);//重新定位到目录文件的头部
把目录指针恢复到目录的起始位置。
//telldir函数
#include <dirent.h>
long telldir(DIR *dirp);//函数返回值是为目录流的当前位置,表示目录文件距开头的偏移量。
//seekdir
#include <dirent.h>
void seekdir(DIR *dirp, long offset);
seekdir表示设置文件流指针位置。
//closedir 关闭目录流
#include <sys/types.h>
#include <dirent.h>
int closedir(DIR *dirp);//关闭目录文件