[英]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.