所在的头文件 <sys/stat.h>
struct stat{
mode_t st_mode; /*文件的访问模式*/
ino_t st_ino; /*i节点的信息*/
dev_t st_dev; /*设备号*/
dev_t st_rdev; /*特殊文件的设备号*/
nlink_t st_nlink; /*硬链接接数*/
uid_t st_uid; /*文件所有者的用户ID*/
gid_t st_gid; /*文件所有者的组ID*/
off_t st_size; /*普通文件的大小*/
time_t st_atime; /*文件的访问时间*/
time_t st_mtime; /*文件的修改时间*/
time_t st_ctime; /*文件的状态改变时间*/
blksize_t st_blksize;/*最佳I/O块大小*/
blkcnt_t st_blocks;/*文件所占用的磁盘块*/
}
注意:st_rdev st_blksize st_blocks 这三个字段不是 POSIX.1 要求的
1、stat函数
int stat(const char* restrict pathname , struct stat * restrict buf);
跟随符号链接,该函数指定一个符号链接的时候,函数返回的是符号链接指向的文件的信息
1 #include<stdio.h> 2 #include<unistd.h> 3 #include<sys/stat.h> 4 5 int 6 main(int argc, char** argv) 7 { 8 struct stat buf; 9 10 stat(argv[1],&buf); 11 12 printf("文件访问标志 :%o\n",buf.st_mode); 13 printf("设备号 :%d\n",buf.st_dev); 14 printf("特殊设备文件号 :%d\n",buf.st_rdev); 15 printf("硬链接数 :%d\n",buf.st_nlink); 16 printf("文件所有者用户ID:%d\n",buf.st_uid); 17 printf("文件所有者组ID :%d\n",buf.st_gid); 18 printf("普通文件的大小 :%d\n",buf.st_size); 19 printf("上次访问时间 :%d\n",buf.st_atime); 20 printf("上次修改时间 :%d\n",buf.st_mtime); 21 printf("上次状态更新时间:%d\n",buf.st_ctime); 22 printf("最佳I/O块大小 :%d\n",buf.st_blksize); 23 printf("文件所占块数 :%d\n",buf.st_blocks); 24 25 return 0; 26 }
2、fstat函数
int fstat(int fd, struct stat * buf);
fstat 同 stat , 但是只是从文件描述符上获取 文件的 stat 信息
3、lstat函数
int lstat(const char * restrict pathname , struct stat * buf);
lstat函数同stat函数, 但是 lstat 函数不跟随符号链接 , 当访问符号链接的时候, 获取的是符号链接本身的stat,而不是其指向的文件的stat