Linux下文件属性的获取

2014-11-24 13:15:19 · 作者: · 浏览: 3

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