2012-08-16 53 views

回答

4

那麼你可以使用DefaultExecutorApache Commons Exec庫執行命令的UNIX命令的想法,但它在內部使用java.lang.Runtimejava.lang.Process

我建議你在Runtime上使用這個庫,因爲Apache Command Execution API更復雜,並且提供比Java運行時更多的功能。它也處理退出值。

+0

它是否處理懸掛問題詳見本評論 - http://stackoverflow.com/a/5483880/537503? – 2014-07-10 04:18:28

0

有不少可能的方法;但是如果不理解你的動機,我不能稱他們任何一個都合意。

例如,用C或Perl或其他語言編寫程序,並讓它在套接字上偵聽。然後你的java程序可以連接到套接字併發送帶有程序名稱的消息以產生,參數等。接收器程序可以繼續併產生這個。

+0

正確,所以這個想法是創建Java服務器應用程序,它響應像ls,pwd,cd等基本命令。 – tosi 2012-08-16 13:31:20

0

有兩種方法來執行Unix命令:

  1. 您可以使用java.lang.Runtimejava.lang.Process
  2. 您可以使用JNI/JNA訪問共享庫。所以你可以用它來訪問操作系統級命令來創建一個進程(在Unix上的system()exec*())。

不推薦第二種方法:這是很難得到正確,最終,你將最終的東西恰好具有相同的功能Runtime.exec()

如果你只需要功能,然後你可以用Java再次實現這些命令。例如,要實施ls,請使用File.listFiles()