从bash中的命名管道读取并将其传递到java进程中

时间:2013-01-18 09:12:43

标签: bash named-pipes

我有一个由第三方开发者提供的JAVA-Jar-File。 文件从STDIN读取并写入STDOUT。

我能够将JAR-File配置为写入日志文件。

但我还必须将STDIN的输入源重写为命名管道,因此我可以通过自己的应用程序将命令发送到java-pocess。

我已经尝试过从管道中读取这两件事(bash):

cat < pipeline_name | java -jar external_application.jar

这适用于第一个命令。收到第一个输入行后,'cat'终止,我无法发送命令。

我的另一个尝试:

tail -f pipeline_name | java -jar external_application.jar

这很好用。所有命令都传递给JAVA-Application。 但是:如果java应用程序正在终止,那么tail -f将像以前一样运行。

我需要一个解决方案,如果JAVA-Process正在终止,则停止从管道读取。

非常感谢

1 个答案:

答案 0 :(得分:1)

使用bash redirectionheres a cheatsheet

java -jar external_application.jar < pipeline_name

&lt;表示java进程将从pipeline_name

读取它的stdin