将标准输出通过管道传输到仅从文件读取的程序

问题描述 投票:0回答:1

我有两个程序

P
(生产者)和
C
(消费者)。 P 可以以写入
stdout
的方式运行。但
C
是一个遗留程序,只能从磁盘上的文件中读取。正如
./C -f </path/to/file>

在 Linux(或 macOS)上,有没有办法直接将

P
传输到
C
,而不写入磁盘上需要稍后清理的临时命名文件?

背景:在我的用例中,

P
是一个密码管理器,我想从中检索短暂的秘密。
C
是我的应用程序,需要使用“密钥文件”中的秘密。在这个特定场景中,
P
是1Password cli客户端,
C
kinit
,密钥文件是我不想存储在磁盘上任何位置的密钥表。

linux pipe stdout kerberos 1password
1个回答
0
投票

听起来像是命名管道的一个很好的用例。您可以使用

mkfifo
命令在 Linux 上创建命名管道,该命令运行时会创建看起来像文件的东西。

  mkfifo /path/to/file

现在您可以执行您的

./C -f </path/to/file>
,程序将坐下来尝试从文件中读取。

在单独的 shell 中,您可以执行

./P -flags > </path/to/file>
操作,
stdout
将被重定向到命名管道,
./C
程序将在其中读取它。

查看这个问题及其答案,了解 Linux 中命名管道使用的一些简单示例

© www.soinside.com 2019 - 2024. All rights reserved.