本文針對爲何Runtime.exec("ls")沒有任何輸出做出解答,解答以下:java
調用Runtime.exec方法將產生一個本地的進程,並返回一個Process子類的實例,該實例可用於控制進程或取得進程的相關信息. 因爲調用Runtime.exec方法所建立的子進程沒有本身的終端或控制檯,所以該子進程的標準IO(如stdin,stdou,stderr)都經過Process.getOutputStream(),Process.getInputStream(), Process.getErrorStream()方法重定向給它的父進程了.用戶須要用這些stream來向 子進程輸入數據或獲取子進程的輸出. 因此正確執行Runtime.exec("ls")的例程以下:
try
{
process = Runtime.getRuntime().exec (command);
InputStreamReader ir=newInputStreamReader(process.getInputStream());
LineNumberReader input = new LineNumberReader (ir);
String line;
while ((line = input.readLine ()) != null)
System.out.println(line);
}
catch (java.io.IOException e){
System.err.println ("IOException " + e.getMessage());
}ide