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});

これは失敗したりキャッチしたりしませんが、新しく実行中のプロセスの stdout を確認できるようにする必要がありますが、確認できません。

注: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()返されたプロセスの stdout にアクセスするために使用します。が提供する施設も利用できますProcessBuilder.Redirect

于 2012-04-25T18:48:19.217 に答える