Yin的笔记本

vuePress-theme-reco Howard Yin    2021 - 2025
Yin的笔记本 Yin的笔记本

Choose mode

  • dark
  • auto
  • light
Home
Category
  • CNCF
  • Docker
  • namespaces
  • Kubernetes
  • Kubernetes对象
  • Linux
  • MyIdeas
  • Revolution
  • WebRTC
  • 云计算
  • 人工智能
  • 分布式
  • 图像处理
  • 图形学
  • 微服务
  • 数学
  • OJ笔记
  • 博弈论
  • 形式语言与自动机
  • 数据库
  • 服务器运维
  • 编程语言
  • C
  • Git
  • Go
  • Java
  • JavaScript
  • Python
  • Nvidia
  • Rust
  • Tex
  • Shell
  • Vue
  • 视频编解码
  • 计算机网络
  • SDN
  • 论文笔记
  • 讨论
  • 边缘计算
  • 量子信息技术
Tag
TimeLine
About
查看源码
author-avatar

Howard Yin

303

Article

153

Tag

Home
Category
  • CNCF
  • Docker
  • namespaces
  • Kubernetes
  • Kubernetes对象
  • Linux
  • MyIdeas
  • Revolution
  • WebRTC
  • 云计算
  • 人工智能
  • 分布式
  • 图像处理
  • 图形学
  • 微服务
  • 数学
  • OJ笔记
  • 博弈论
  • 形式语言与自动机
  • 数据库
  • 服务器运维
  • 编程语言
  • C
  • Git
  • Go
  • Java
  • JavaScript
  • Python
  • Nvidia
  • Rust
  • Tex
  • Shell
  • Vue
  • 视频编解码
  • 计算机网络
  • SDN
  • 论文笔记
  • 讨论
  • 边缘计算
  • 量子信息技术
Tag
TimeLine
About
查看源码
  • FUSE(用户空间文件系统)

    • 原理概述
      • 基本使用方法
        • FUSE接口解析(待续)

        FUSE(用户空间文件系统)

        vuePress-theme-reco Howard Yin    2021 - 2025

        FUSE(用户空间文件系统)


        Howard Yin 2021-09-06 05:38:02 编程语言C

        # 原理概述

        # 基本使用方法

        FUSE本质是一套C语言库文件,更具体一点,是一个作为接口的结构体fuse_operations和一个用在主函数里加载接口的函数fuse_mail。

        在使用是,先引入库文件:

        #include <fuse.h>
        
        1

        然后对结构体进行实现:

        int XXfs_getattr (const char *, struct stat *) {
            //自己实现的接口函数
        }
        int XXfs_readlink (const char *, char *, size_t) {
            //自己实现的接口函数
        }
        int XXfs_getdir (const char *, fuse_dirh_t, fuse_dirfil_t) {
            //自己实现的接口函数
        }
        int XXfs_mknod (const char *, mode_t, dev_t) {
            //自己实现的接口函数
        }
        int XXfs_mkdir (const char *, mode_t) {
            //自己实现的接口函数
        }
        int XXfs_unlink (const char *) {
            //自己实现的接口函数
        }
        int XXfs_rmdir (const char *) {
            //自己实现的接口函数
        }
        int XXfs_symlink (const char *, const char *) {
            //自己实现的接口函数
        }
        int XXfs_rename (const char *, const char *) {
            //自己实现的接口函数
        }
        //接口函数还有很多,不一一列举
        
        //各接口函数都实现后将其一一填入结构体中
        struct fuse_operations setfs_oper = {
            .getattr = XXfs_getattr,
            .readlink = XXfs_readlink,
            .getdir = XXfs_getdir,
            .mknod = XXfs_mknod,
            .mkdir = XXfs_mkdir,
            .unlink = XXfs_unlink,
            .rmdir = XXfs_rmdir,
            .symlink = XXfs_symlink,
            .rename = XXfs_symlink
            //接口函数还有很多,不一一列举
        }
        
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        33
        34
        35
        36
        37
        38
        39
        40
        41
        42

        实现了结构体之后把它填入fuse_main即可:

        int main(int argc, char *argv[])
        {
            int fuse_stat;
            void *user_data; 、、这里可以随便整点自定义的数据
            fuse_stat = fuse_main(argc, argv, &setfs_oper, user_data);
            return fuse_stat;
        }
        
        1
        2
        3
        4
        5
        6
        7

        # FUSE接口解析(待续)

        帮助我们改善此页面!
        创建于: 2021-09-06 05:38:23

        更新于: 2021-09-06 05:38:23