将输入传递给不从stdin读取的应用程序

时间:2013-04-22 16:49:19

标签: java linux windows command-line-interface

我有一个读取文本文件的应用程序。

如果应用程序从stdin读取它,那么我可以转发输入/管道

$ app < input.txt
$ cat input.txt | app

不幸的是,应用程序需要一个文件名作为参数..

$ app --input input.txt

我无法轻易更改输入源(例如,交换本地文件[如示例]以获得wget的结果。)

有没有选择以某种方式欺骗这个应用程序?

如果解决方案需要临时文件,则该文件不必留在FS上。

该应用程序实际上是一个可执行的JAR;我想要在Win / Lin上运行的技巧..

2 个答案:

答案 0 :(得分:3)

我不确定它是否适合你,但我已经用fifo解决了类似的问题。 http://linux.die.net/man/3/mkfifo

这可以为您提供应用与资源之间的间接支持。

mkfifo fifo.input
app --input fifo.input

现在您可以用不同的来源填充管道。

cat input > fifo.input
ctrl-c
cat otherInput > fifo.unput

希望它能在Linux上解决您的问题。到目前为止,我知道它在Windows上不存在。

答案 1 :(得分:0)

你想做这样的事情。

 java -jar myjar.jar arg1 arg2

其中myjar.jar是可执行jar,而arg1 arg2等是程序所期望的参数。

因此,假设您要将input.txt传递给您的应用程序,而only commandline parameter required则命令将

java -jar myjar.jar input.txt