【问题标题】:Write data to FUSE named pipe将数据写入 FUSE 命名管道
【发布时间】:2015-12-14 13:41:30
【问题描述】:

我创建了一个虚拟文件系统,将其输出显示为只读命名管道(即S_IFIFO)。

就getattr而言,我的主机显示权限模式设置正确。但是,当我尝试打开管道时(例如,cat my_fuse_mount/my_pipe),它显然会这样做,但没有数据流。

我期待open-read-release 序列执行打开数据并将数据推送到命名管道所需的操作,但显然不是。当我在调试模式下运行时,FUSE 的日志似乎没有表明它正在尝试做任何事情。

什么 FUSE 操作/s 用于将数据推送到命名管道?

【问题讨论】:

  • 尝试附加调试器并查看进程停止的位置。我不知道命名管道在 FUSE 文件系统上是如何工作的,但通常在 Linux 上打开管道时,open 调用会阻塞,直到另一个进程打开管道的另一端。

标签: c posix fifo fuse


【解决方案1】:

FUSE 可以创建命名管道等特殊文件,但它的读写操作只对普通文件有效。如果你想实现一个管道,你需要像CUSE 这样的东西。

【讨论】:

  • ...回到绘图板,然后!
  • 好吧,你可以选择让一个普通的用户空间应用程序打开管道并写入它。您甚至可以在 fuse 文件系统可执行文件中执行此操作,尽管这可能会有点复杂。
  • 我的用例试图绕过"knowing the filesize in advance" restriction,方法是通过命名管道强制输出(因此大小为零且无需搜索),一旦被读取,文件就可以成为常规文件一个具有正确属性的人......不过,谢谢你;知道这很有用:)
猜你喜欢
  • 2012-07-31
  • 2015-05-31
  • 2013-02-28
  • 1970-01-01
  • 2012-01-28
  • 1970-01-01
  • 2013-01-22
  • 2020-02-01
  • 2015-12-11
相关资源
最近更新 更多