如何通过管道将 app1 传输到 app2,但在终端中显示两个输出?

如何通过管道将 app1 传输到 app2,但在终端中显示两个输出?

我想知道如何将应用程序的标准输出重定向到另一个应用程序的输入,但仍然看到 app1 输出。

源应用程序是用 c 编写的,第二个应用程序是用 perl 编写的。这样做的目的是,我想用 perl 脚本解释 C 程序的输出,并根据输入执行某些操作。问题是如果我使用./c_app | ./perl.pl,那么使用|管道,我只能看到 perl 脚本的输出。就像 perl 会吞掉 C_app 的输出一样。

我尝试使用tee,并找到了一些示例,但所有这些示例都基于将源应用程序的输出重定向到文件,而不是其他应用程序的输入。

下图说明了过程、得到的以及预期的结果。 在此输入图像描述

一个限制是我不能修改 C 应用程序,也不能修改 Perl,所以我会使用 Linux 的东西来解决它。是否可以使用同一个终端来查看两个输出?我不知道如何解决它。

任何建议、bash 脚本等将不胜感激。

答案1

感谢@steeldriver 的推荐!

解决办法是:

./c_app | tee /dev/tty | perl server.pl

相关内容