2014-01-27 7 views
0

Я рассмотрел несколько примеров, которые должны это сделать, и я не вижу разницы между моими и другими в отношении основной механики. Вот мой код:Программа Java, не отображающая вывод с консоли

public class Console 
{ 
    public static void main(String[] args) throws IOException, InterruptedException{ 
     Runtime rt = Runtime.getRuntime(); 
     Process ps; 
     System.out.println("Gathering available network data...");  

     String cmd[] = {"ifconfig","|","grep","'inet addr:'"}; 
     ps = rt.exec(cmd); 
     getOutput(cmd,ps); 
    } 
    public static String getOutput(String[] c, Process p) throws IOException, InterruptedException 
    { 
     Process ps = p; 
     String output=""; 
     BufferedReader readerStd = new BufferedReader(new InputStreamReader(ps.getInputStream())); 
     BufferedReader readerErr = new BufferedReader(new InputStreamReader(ps.getInputStream())); 

     String line = null; 
     System.out.println("Result:"); 
     while ((line = readerStd.readLine()) != null) { 
      System.out.println(line); 
      output+=line+"\n"; 
     } 

     if((line = readerErr.readLine()) != null) 
     { 
      System.out.println("------ Std Err -------"); 
      System.out.println(line); 
      while ((line = readerErr.readLine()) != null) 
      { 
       System.out.println(line); 
      } 
     } 
     return output; 
    } 
} 

Ожидаемый результат:

Gathering available network data... 
Result: 
      inet addr:10.40.2.234 Bcast:10.40.2.255 Mask:255.255.255.0 
      inet addr:127.0.0.1 Mask:255.0.0.0 

Фактический выход:

Gathering available network data... 
Result: 

Что я делаю неправильно?

ответ

0

Оператор трубы | интерпретируется как оболочка, поэтому не является частью самой команды. Кроме того, команда должна появиться в одном маркере, чтобы предотвратить сегмент Grep оценивается отдельно:

String cmd[] = { "bash", "-c", "ifconfig |grep 'inet addr:'" }; 
+0

Ну, это даст мне некоторые результаты, но только для IFCONFIG и игнорирует всю Grep часть выражения. Определенно улучшение, но не то, что мне нужно. – cHam

+0

На самом деле нет необходимости в команде tokenize - см. Обновление – Reimeus

Смежные вопросы