我有两个程序
P
(生产者)和C
(消费者)。 P 可以以写入 stdout
的方式运行。但 C
是一个遗留程序,只能从磁盘上的文件中读取。正如./C -f </path/to/file>
。
在 Linux(或 macOS)上,有没有办法直接将
P
传输到 C
,而不写入磁盘上需要稍后清理的临时命名文件?
背景:在我的用例中,
P
是一个密码管理器,我想从中检索短暂的秘密。 C
是我的应用程序,需要使用“密钥文件”中的秘密。在这个特定场景中,P
是1Password cli客户端,C
是kinit
,密钥文件是我不想存储在磁盘上任何位置的密钥表。
听起来像是命名管道的一个很好的用例。您可以使用
mkfifo
命令在 Linux 上创建命名管道,该命令运行时会创建看起来像文件的东西。
mkfifo /path/to/file
现在您可以执行您的
./C -f </path/to/file>
,程序将坐下来尝试从文件中读取。
在单独的 shell 中,您可以执行
./P -flags > </path/to/file>
操作,stdout
将被重定向到命名管道,./C
程序将在其中读取它。