linux 文件系统

文件系统:

inode:

    命令: stat  文件名 查看文件 inode结点

    本质为结构体,存储文件的属性信息 如 权限、类型 大小、盘块位置  大多数inode存在磁盘上

    少量常用。近期使用的inode 会被缓存到内存中

dentry

    目录项,本质依然是结构体,重要成员变量有两个 {文件名 ,inode...} 

    文件内容保存在磁盘块中

stat:函数(获取文件属性 从 inode结点中获取)

     int stat(const char *path, struct stat *buf);

    参数:

        path: 文件路径

        buf (传出参数)存放文件属性

    返回值:

        成功:0

        失败:-1 errno

    获取文件大小: buf.st_size 

    获取文件类型:buf.st_mode

    获取文件权限:buf.st_mode

       S_ISREG(buf.st_mode)  is it a regular file?

           S_ISDIR(m)  directory?

           S_ISCHR(m)  character device?

           S_ISBLK(m)  block device?

           S_ISFIFO(m) FIFO (named pipe)?

           S_ISLNK(m)  symbolic link?  (Not in POSIX.1-1996.)

           S_ISSOCK(m) socket?  (Not in POSIX.1-1996.)
    

    符号穿透: stat 会 lstat 不会 

        用stat函数去查看软连接类型时 ,会显示源文件的类型

link/unlink函数:

        为已经存在的文件创建目录项(硬链接)

       int link(const char *oldpath, const char *newpath);
    
        删除一个文件的目录项

      int unlink(const char *pathname);

    注意:linux 下删除文件机制:不断将 st_nlink -1, 直至减为 0 。无目录项对应的文件,将会被操作系统择机释放(具体时间有系统内部调度算法决定)

        因此,我们删除文件,从某种意义上说 ,只是让文件具备了被释放条件。

    unlink 函数的特征:清除文件时,如果文件的硬链接数 到0 了,没有dentry对应,但是改文件仍不会马上被释放。要等到所有打开该文件的进程关闭该

                文件,系统才会挑时间将改文件释放掉。


            


隐式回收:

    当进程结束运行时,所有该进程打开的文件会被关闭,申请的内存空间会被释放。

// 实现 mv 命令
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>

int main(int argc,char* argv[]){

  link(argv[1],argv[2]);
  unlink(argv[1]);
  return 0;
}


文件、目录权限:


    注意:目录文件也是 “文件” 其文件内容是该目录下所有子文件的目录项 dentry。可一尝试用vim打开一个目录。

   

       

  r      w        x
   文件文件内容可以被查看   内容可以被修改  可以运行产生一个进程
 cat、more、less ...   vi   ./文件名
    目录 目录可以被浏览    创建、删除、 修改文件    可以被打开进入
  ls、treetouch、rm、mv、mkdir cd

    


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值