1. 文件存储
1.1 目录项dentry和inode
一个文件主要由两部分组成:目录项dentry和inode结点。
目录项dentry:文件名+Inode号
Inode:文件的字节数+文件块数+文件拥有者的UserID+文件的GroupID+文件的读写执行权限+文件的时间戳+链接数+文件数据block位置+inode编号
1.2 stat函数
获取文件属性,(从inode结构体中获取)
#include <sys/stat.h>
int stat(const char *restrict pathname, struct stat *restrict statbuf);
pathname:文件名
statbuf:inode结构体指针(传出参数)
文件属性将通过传出参数返回给调用者。成功返回0,失败返回-1并设置errno
案例:通过lseek来获取文件大小
1 #include <sys/stat.h>
2 #include <stdio.h>
3 #include <unistd.h>
4 #include <stdlib.h>
5 int main(int argc, char *argv[]){
6 struct stat sbuf;
7
8 int ret = stat(argv[1],&sbuf);
9 if (ret == -1){
10 perror("stat error");
11 exit(1);
12 }
13
14 printf("fize_size: %ld\n",sbuf.st_size);
15 return 0;
16 }