0

我正在尝试使用 Runtime.exec() 启动一个新进程,但我的问题在于使用 ssh 远程进入,然后在那里运行一个 java 程序。代码:

test = "ssh -t username@host java packageName.ClassName portNumber (Other command line args for this class)"
Process proc = Runtime.getRuntime().exec(new String[] {"/bin/bash", "-c", test});

这不会失败或捕获,但我需要能够看到新运行进程的标准输出,但我没有。

注意:如果我从命令行运行ssh -t username@host java packageName.ClassName portNumber (Other command line args for this class)它工作正常。我通过使用 ssh 密钥将主机设置为不需要密码。

有任何想法吗?

4

3 回答 3

2

您需要使用Process.getInputStream从正在创建的子流程中获取输出。

有关. _ _Runtime.exec

于 2012-04-25T18:51:31.277 回答
1

我认为您可以要求输入与流程的标准输出相对应的输入流,然后将其打印在标准输出上。如果您需要在执行后查看它,只需waitFor()在进程上调用方法,以便在您开始打印之前完成。

于 2012-04-25T18:47:35.833 回答
1

用于getInputStream()访问返回进程的标准输出。您还可以使用 . 提供的设施ProcessBuilder.Redirect

于 2012-04-25T18:48:19.217 回答