1. 数据结构和系统调用
在Linux下进行C/C++编程,主要通过以下三个系统调用来获取文件(普通文件,目录,管道,socket,字符,块等)属性。
头文件“#include ”
(1) //通过文件名称获取文件属性
int stat(const char *restrict pathname, struct stat *restrict buf);
(2) //通过文件描述符获取文件属性
int fstat(int filedes, struct stat *buf);
(3) //通过符号文件名称获取文件属性
int lstat(const char *restrict pathname, struct stat *restrict buf);
返回值(三个函数一样)
成功:0
失败:-1
三个系统调用的区别:
1. fstat接受的第一个参数是“文件描述符”,stat和lstat是“文件全路径”,文件描述符需要用调用open之后才能得到,文件全路经直接写即可;
2. lstat获取的是该符号链接本身的信息;而stat获取的是该链接指向的文件的信息;
这三个系统调用都依赖一个重要的结构体struct stat