Linux系统编程——文件系统

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 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值