簡體   English   中英

關於Linux問題的帶有ssh的Java Runtime.exec()

[英]Java Runtime.exec() with ssh on Linux Issues

我正在嘗試使用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鍵輸入密碼。

有任何想法嗎?

您需要使用Process.getInputStream從正在創建的子流程中獲取輸出。

有關Runtime.exec討論,請參見本文

我認為您可以要求輸入與該流程的標准輸出相對應的輸入流,然后將其打印在標准輸出上。 如果您需要在執行后看到它,只需在進程上調用waitFor()方法,使其在開始打印之前完成。

使用getInputStream()訪問返回的進程的標准輸出。 您還可以使用ProcessBuilder.Redirect提供的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM