为了账号安全,请及时绑定邮箱和手机立即绑定

在 Golang 中使用 go-fuse 包

在 Golang 中使用 go-fuse 包

Go
慕无忌1623718 2021-08-23 17:03:30
您好,我即将将我的两个几乎可以工作的简单保险丝文件系统从bazillion 保险丝移植到 go-fuse。 go-fuse api似乎更复杂。问题是:在NewServer(),使用哪个 RawFileSystem?如何实现 read、readdir 等的回调?在哪里使用WaitMount()?什么是DeleteNotify(),EntryNotify()?
查看完整描述

1 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

好的,我找到了解决方案


1. 创建一个包含 nodefs.Node 的结构体:


    type my_root struct {nodefs.Node}

初始化它


    my = &my_root{Node: nodefs.NewDefaultNode()}

建立连接和原始文件系统


    con := nodefs.NewFileSystemConnector(my, nil)

    raw := fuse.NewRawFileSystem(con.RawFS())

最后,启动保险丝 fs


    server, err := fuse.NewServer(raw, f.dir, optz)

像这样:


func (my_root) OpenDir(context *fuse.Context) ([]fuse.DirEntry, fuse.Status) {}

func (my_root) Lookup(out *fuse.Attr, name string, context *fuse.Context) (node *nodefs.Inode, code fuse.Status)

在第 1 步之后,像这样:


server.WaitMount()

我不需要这个。


查看完整回答
反对 回复 2021-08-23
  • 1 回答
  • 0 关注
  • 222 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信