关于linux软件编程4:目录IO和一些时间函数
目录IO
1操作方式
- 打开目录文件
- 读取目录文件中的目录项
- 关闭目录文件
2函数接口
1. opendir
原型:DIR *opendir(const char *name);
功能:打开目录流获得目录流指针
参数:name:目录文件的路径
返回值:成功返回目录流指针失败返回NULL
2. closedir
原型:int closedir(DIR *dirp);功能:
关闭目录流指针
3. readdir
原型:struct dirent *readdir(DIR *dirp);
功能:读取并返回下一个目录项的信息
参数:dirp:目录流指针
返回值:成功返回包含目录项信息结构体指针失败返回NULL读到文件末尾返回NULLstruct dirent {ino_t d_ino; /* Inode number:通过inode找到文件对应的磁盘空
间位置 */off_t d_off; /* Not an offset; see below */unsigned short d_reclen; /* Length of this record */unsigned char d_type; /* Type of file; not supportedby all filesystem types:文件类型 */char d_name[256]; /* Null-terminated filename: 文件名*/};
4. getcwd
原型:char *getcwd(char *buf, size_t size);
功能:获得当前工作目录的绝对路径
参数:buf:存放路径字符串空间首地址size:最多存放字符串的大小
返回值:成功返回包含字符串空间的首地址失败返回NULL
5. chdir
原型:int chdir(const char *path);
功能:切换当前的工作路径
参数:path:要切换的路径
返回值:成功返回0失败返回-1
6. mkdir
原型:int mkdir(const char *pathname, mode_t mode);
功能:创建目录文件
注意:
r:读权限,决定用户是否能够查看目录下所有文件名
w:写权限,决定用户是否能够在目录下新建文件
x:执行权限,决定用户是否能够进入目录
7. rmdir
原型:int rmdir(const char *pathname);
功能:删除目录文件
文件名和路径:
file.txt:文件名
./file.txt:路径
时间相关的函数接口
1.时间类型分类:
1. time_t 类型时间
- 1970-1-1到现在的秒数
- 一般用于时间计算相关逻辑
2. struct tm 类型时间
- 包含年月日时分秒信息
3. char *字符串类型时间
- 由时间拼接的字符串
2.函数接口:
1. time
原型:time_t time(time_t *tloc);
功能:返回1970-1-1日到现在的秒数
参数:存放秒数空间的首地址
返回值:成功返回秒数失败返回-1
2. localtime
原型:struct tm *localtime(const time_t *timep);
功能:将秒数转换为结构体时间
参数:timep:1970-1-1到现在的秒数
返回值:成功返回包含时间的结构体指针失败返回NULLstruct tm {int tm_sec; /* Seconds (0-60) */int tm_min; /* Minutes (0-59) */int tm_hour; /* Hours (0-23) */int tm_mday; /* Day of the month (1-31) */int tm_mon; /* Month (0-11) */int tm_year; /* Year - 1900 */int tm_wday; /* Day of the week (0-6, Sunday = 0) */int tm_yday; /* Day in the year (0-365, 1 Jan = 0) */int tm_isdst; /* Daylight saving time */};
3. mktime
原型:time_t mktime(struct tm *tm);
功能:
将结构体时间转换为time_t类型的时间
参数:
tm:结构体时间的首地址
返回值:
成功返回time_t时间
失败返回-1
4. ctime
原型:char *ctime(const time_t *timep);
功能:
将time_t时间转换为字符串时间
exe:实现从终端输入单词,打印单词的含义