我有 2 个应用程序:
我目前从生产者那里写出中间结果,然后消费者从磁盘读取这些文件并产生最终结果。
我想通过将生产者的输出直接“流式传输”到消费者来最小化这个 I/O。
我碰到命名管道(mkfifo)和随后的例子在这里。这看起来很棒,但我无法确定的是实际是如何实现的?FIFO 队列是否只是通过文件进行缓冲?如果是这样,那可能对我没有帮助。我希望内容完全“通过内存”流式传输而不使用磁盘。也许这在整个流程中是不可能的?
Mar*_*ick 10
没有磁盘 i/o(除非在文件系统中导航以打开 fifo 文件。)
FIFO 特殊文件(命名管道)类似于管道,不同之处在于它作为文件系统的一部分进行访问。[...] 当进程通过 FIFO 交换数据时,内核会在内部传递所有数据而不将其写入文件系统。因此,FIFO 特殊文件在文件系统上没有内容;文件系统条目仅用作参考点,以便进程可以使用文件系统中的名称访问管道。