mkfifo - 磁盘I / O实际发生了吗?

Modified on: Sat, 30 Jun 2018 09:13:30 +0800

我有2个申请:

  • 制作人(N个实例)
  • 消费者(1个实例)

我目前从制作人那里写出中间结果,然后消费者从磁盘读取这些文件并生成 final 结果。

我希望通过将生产者的输出直接“流式传输”到消费者来最小化这种I / O.

我遇到了命名管道(mkfifo)和后续示例此处。这看起来很棒,但我无法确定这是如何实际实现的? FIFO队列是通过文件缓冲的吗?如果是这样,那可能对我没有帮助。我希望内容能够在不使用磁盘的情况下完全流通“内存”。也许跨流程不可能这样做?

最佳答案

没有磁盘i / o(可能在导航文件系统以打开fifo文件时除外。)

Linux fifo(7)手册页

  

FIFO特殊文件(命名管道)与管道类似,但它除外
  作为文件系统的一部分被访问。 [...]当进程交换数据时
  通过FIFO,内核在不写入的情况下在内部传递所有数据
  到文件系统。因此,FIFO特殊文件没有内容
  文件系统;文件系统条目仅用作参考点
  进程可以使用文件系统中的名称访问管道。


相关问答

添加新评论