Linux系统编程——目录操作 一、目录操作流程目录也是被当作文件操作但是最好不要随意更改目录内容操作流程遵循打开读取关闭。1.打开目录DIR *opendir(const char *name);功能:打开一个目录获得一个目录流指针参数:name:目录名或路径返回值成功返回目录流指针失败返回NULL2.读取目录struct dirent *readdir(DIR *dirp);功能:从目录流中读取文件信息并将保存信息的结构体地址返回参数:dirp:目录流指针返回值:包含文件信息的结构体出错或者读到目录流末尾返回NULL在这个结构体中主要关心的数据是d_type类型读到的是文件还是目录d_name[256](读到的目录或文件的名字字符串)3.关闭目录int closedir(DIR *dirp);功能关闭之前已经打开的目录流对象参数opendir的返回结果中目录流对象返回值成功 0失败 -1二、相关辅助函数1.切换当前工作路径int chdir(const char* pathname);功能切换当前工作路径参数: 要切换到的工作路径返回值成功 0失败 -12.获得当前工作路径char *getcwd(char *buf,size_t size)功能获得当前工作路径参数:buf存放路径的字符串名buf一般256个字节size一次接收的字符串的大小 一般为sizeof(buf)返回值成功 存放路径的字符串名失败 NULL3.创建一个目录int mkdir(const char* patnname,mode_t mode)功能创建一个目录参数:pathname 要创建的目录的名字mode 目录的权限 一般目录作者和组成员都是可读可写可进入的其他人可读不能写可进入因此设置为775但是yaojia两个固定掩码值的偏移所以一般是0777返回值成功 0失败 -14.删除目录int rmdir(const char *pathname)功能获得当前工作路径参数: patnname 要删除的目录名只能删除空目录如果要删除的目录非空需要先进入目录里将里面的文件和目录全部删除再返回上一级删除空目录。返回值成功 0失败 -15.获得文件属性int stat(const char*patnname,struct stat* buf)功能获取文件或者目录的属性参数:pathname 文件名或者文件路径buf 保存文件属性的结构体的地址返回值成功 0失败 -1最常关心的结构体成员是st_size文件大小三、与时间相关的函数在linux系统中记录实际的方式是记录秒数。unix 时间戳(从 1970 1-1 0:0:0 开始记录的秒数)。1.获取时间time_t time(time_t *t);功能:获得1970年到现在的秒数参数:t:存放秒数的空间首地址返回值:成功返回1970年到现在的秒数失败返回-12.时间转换struct tm *localtime(const time_t *timep);功能:将一个秒数转化成日历时间参数:timep:保存秒数空间的地址返回值:成功返回保存日历时间结构体的指针失败返回NULL3.简单的时间转换char *ctime(const time_t *timep);功能:将时间秒数转化成字符串参数:timep:保存时间空间的地址返回值:成功返回获得时间字符串的首地址失败返回NULL四、系统报错相关函数1.打印错误信息void perror(const char *s)功能:打印s字符串和errno对应的错误信息参数:s:要打印在终端上的提醒出错信息提示信息一般和相邻的函数相关返回值:缺省2.打印错误码对应的具体错误信息char *strerror(int errnum)功能:打印错误码对应的具体错误信息参数:errnum 错误码errno是个全局变量包含头文件errno.h使用时声明它就行不用修改它的值那个函数执行失败会将它自动修改成对应的错误码返回值:错误码对应的具体错误信息字符串的地址。