问题标签 [fuse]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1916 浏览

c - 使用块特殊文件/设备来实现文件系统

我已经使用 FUSE 实现了一个基本的文件系统,实现了所有可预见的 POSIX 功能[当然我什至还没有分析过;)]。目前我能够在常规文件上运行文件系统(st_mode & S_IFREG),但下一步开发是将其托管在实际的块设备上。按原样运行我的代码,st_size在调用fstat设备后立即读取失败。当然,我不希望问题就此止步:

  • 与常规文件相比,在块设备上操作需要哪些更改?
  • 关于性能、限制、特殊功能等,我需要做哪些特别考虑?
  • 是否有处理块特殊文件的教程和参考资料?谷歌搜索几乎没有用处。我只有背景知识(讽刺的是,在我黑暗的过去来自 MSDN)和联机帮助页中的一些少量信息。

更新0

  • 我已经指出了“常规文件”的含义。
  • 我不想专注于获取设备大小,我想要常规文件和设备文件在性能和使用方面的差异的一般准则。
0 投票
1 回答
272 浏览

c++ - 任何为 FUSE 提供常用结构和算法的库

我将使用 FUSE 编写文件系统原型。除了 FUSE 之外,是否有任何(额外的)实现良好的库可以提供一些常见的文件系统优化功能,如 dir 缓存、日志、查找表、原子操作等。最好用 C 编写。

顺便说一句,我打算在 OSX 和 Linux 上实现它。这是我将使用 FUSE 而不是本机文件系统的主要问题之一,甚至性能也很重要。

谢谢。

0 投票
3 回答
1149 浏览

qt - FUSE(用户空间中的文件系统)和 Qt 编程

我正在尝试将 FUSE 与 Qt 一起使用,但 fuse_main() 和 app.exec() 有自己的事件循环。这意味着如果我启动一个,另一个将不会启动,因为第一个启动会阻止另一个启动,如下所示。如何处理?

有关 fuse 的更多信息,请访问http://fuse.sourceforge.net/

如果可能,请提供示例。

谢谢你,莱安德罗。

例子:

这将阻止保险丝启动:

这将阻止qt启动:

0 投票
2 回答
244 浏览

c - execve() 传递的未知 open() 标志

执行位于我的 FUSE 文件系统上的 bash 脚本时,open()会使用以下标志进行调用:

flags ( 0100040) 应该对应于在参数 2 中传递的那些open()。未知标志来自一个execve()调用:

我的代码可以识别#define O_LARGEFILE 00100000,但另一个标志似乎只有在execve()被调用时才会出现。

Grepping for the flag 没有找到它:

大多数终端标志被发现。任何人都可以阐明如何追踪这面旗帜的起源和意义,或者在哪里可以找到它的定义?

0 投票
0 回答
4273 浏览

windows - 是否可以在 Windows 中创建虚拟文件?(即FUSE接口)

在 Windows 上创建一个可以为读/写调用添加功能的虚拟文件有多难?

例如,理想情况下,我想创建一个文件,然后附加一个事件处理程序,这样每当读取文件时,读取调用块并运行代码以获取数据,将数据填充到文件中,然后将数据发送到请求读取的程序。

据我了解,这与 FUSE 的工作方式很接近,但 Windows 中似乎没有 FUSE 实现。如果有办法做到这一点,我真的只需要捕获打开/读/写。

0 投票
1 回答
5914 浏览

spring - 在 OSGi 包中访问 Spring 上下文

我有一个 OSGi 包,它使用 bundle-context.xml 文件来初始化一个 bean。

我有一个需要获取 bean 实例的工厂类。在非 OSGI 世界中,我总是只做以下初始化上下文并获取 bean 的句柄......

但是,在 OSGI(FuseESB 4.2,Servicemix4)中,容器会自动加载 bundle-context.xml 文件并初始化 spring 上下文。如果我显式加载上下文(使用上面的代码),则会创建 2 个上下文(这很糟糕)。那么,获取相同上下文/bean 句柄的正确方法是什么?

0 投票
0 回答
462 浏览

python - 带有 FUSE 和 IMAP 的文件名

我想在 python 中使用 IMAP4 构建一个 fuse 文件系统。作为文件名,我想使用每封邮件的主题。所以我可以重命名文件名和主题。
但是主题可以在一个目录中多次使用,因此这违反了常见的文件系统规则。
我不想使用困难的目录系统(如这里),也不想使用唯一的 Message-ID(这样我就无法重命名我的文件和目录)。
我想将 imap 中的电子邮件用作(fuse-)目录,并将这些邮件的附件用作(fuse-)文件。(因为只有一层目录是可能的。)这个 imapfs 的目的是使用邮件作为存储的可能性。

有什么建议如何处理这个文件名问题?感谢您的任何煽动。

0 投票
1 回答
527 浏览

c - Wrapping FUSE from Go

I'm playing around with wrapping FUSE with Go. However I've come stuck with how to deal with struct fuse_operations. I can't seem to expose the operations struct by declaring type Operations C.struct_fuse_operations as the members are lower case, and my pure-Go sources would have to use C-hackery to set the members anyway. My first error in this case is "can't set getattr" in what looks to be the Go equivalent of a default copy constructor. My next attempt is to expose an interface that expects GetAttr, ReadLink etc, and then generate C.struct_fuse_operations and bind the function pointers to closures that call the given interface.

This is what I've got (explanation continues after code):

This gives the following error:

I'm not sure what to pass to these members of C.struct_fuse_operations, and I've seen mention in a few places it's not possible to call from C back into Go code.

If it is possible, what should I do? How can I provide the "default" values for interface functions that acts as though the corresponding C.struct_fuse_operations member is set to NULL?

0 投票
1 回答
1720 浏览

c - 在项目中使用 libfuse,没有 root 访问权限(用于安装)?FTP 挂载和 inotify/kqueue/FSEvents

我希望我的应用程序能够显示来自远程 FTP(或 SFTP 等)位置的目录列表。当远程目录树中的文件/目录发生更改时,应用程序应使用相关更改更新其视图。

因为遍历整个树既慢又浪费,我想使用类似于 FSEvents 的东西(Linux 上的 inotify/kqueues),但显然这些库是基于文件系统的,与 FTP 服务器的连接是不一样的作为挂载的文件系统。

为了使这些库工作,我需要在本地机器上实际挂载一个由 FTP/SFTP 支持的文件系统,然后将 FSEventStream(或 kqueue 等)附加到这个本地挂载。我知道 FUSE 可以做到这一点,但有什么方法可以让我使用 FUSE 而无需用户先安装它?我的意思是,我可以将它与我的 (Mac) 应用程序捆绑并创建挂载,而无需让用户完成实际运行安装程序包以将 libfuse 和内核模块复制到系统中的过程吗?它是否假设/dev/fuse存在,或者它可以存在于/dev/路径之外,在我的应用程序目录中?

Nice Mac 应用程序通过简单的拖放安装,如果可能的话,我想保持这种方式。我不清楚是否可以直接使用 libfuse(只要文件包含在应用程序中),而无需将其安装在系统路径中。

或者,是否有人对通过 FTP 监控更改而不进行轮询有任何其他建议?

0 投票
2 回答
3937 浏览

c - 从 FUSE 调试系统调用

我正在编写一个 FUSE 文件系统,它通过 sqlite 进行一些映射,然后将调用传递给底层文件系统(有点像bbfs的扩展)。当我尝试开始制作文件时,它开始给我带来麻烦。当我调用 mknod 时,它会返回 ERANGE。这是 strace 的尾部(文件系统安装在 test/ 上):

这是我内部日志中的相关部分:

我正在寻找(1)这个直接问题的解决方案和(2)一种调试 FUSE 的好方法。我怀疑 ERANGE 来自 strtol(),但我不知道如何检查。我希望我可以让 gdb 在遇到回调时弹出...

谢谢!

编辑:哦,这是我的 mknod() 函数的来源: