从Java程序启动并与命令行程序交互

时间:2014-06-26 16:38:34

标签: java command-line

Java程序必须启动几个使用命令promt启动的prorams(其中一个是nginx)。我如何处理并从我的Java应用程序向程序发送命令?

我找到了这个图书馆http://commons.apache.org/proper/commons-cli/usage.html但我不确定它是如何帮助的..

我不需要代码。我需要解释这些工作如何运作。

3 个答案:

答案 0 :(得分:2)

请记住,这绝不是一个好的解决方案。

你的行为就像你在命令行上一样,所以你像在shell上一样执行命令。并且总是取决于您的平台。

你说你不想要代码,无论如何我会把它给你;)

Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("service nginx start");

这是通过计划java完成的。

我强烈建议您使用脚本语言。那不是Java。

答案 1 :(得分:2)

其他信息:

要记住的一件事是使用进程上的流来发送输入和检查输出(来自Process类)

abstract InputStream    getErrorStream()
Returns the input stream connected to the error output of the subprocess.

abstract InputStream    getInputStream()
Returns the input stream connected to the normal output of the subprocess.

abstract OutputStream   getOutputStream()
Returns the output stream connected to the normal input of the subprocess.

答案 2 :(得分:1)

如果你需要执行shell命令,可以像这样实现(这个例子使用bash作为执行过程)

Process p = Runtime.getRuntime().exec(new String[]{"bash","-c","my_script.sh"});

您必须为此编写自己的脚本,但您甚至不必将其放入文件中。如果您想为命令提供类似用户的输入,请记住,您可以将echo的结果传递给命令,并且它将充当键入该命令的用户。 e.g

echo 1234 | pinTaker.sh; 

这将有效地"输入" 1234到pinTaker脚本。这也可以用于输入ssh密码之类的东西(虽然这不是一个好主意,但它是一个很好的例子..)