2017-09-25 11 views
-1

私はターミナルコマンドの出力をキャプチャするJavaプログラムを作成しています。JavaランタイムgetInputStreamは大部分のターミナルコマンド出力を無視します

enter image description here

は、しかし、私のJavaプログラムによってレンダリングされた出力は、それだけでの小さなサブセットをキャプチャ:私は、端末に直接自分自身をコマンドを実行する、すなわち「正常な」条件の下で、私は次のような結果を見ることができます、ここを参照してください:

import java.io.*; 

class evmTest { 

    public static void main(String[] args) { 
     String evmResult = ""; 

     String evmCommand = "evm --debug --code 7f00000000000000000000000000000000000000000000000000000000000000027f00000000000000000000000000000000000000000000000000000000000000027f00000000000000000000000000000000000000000000000000000000000000020101 run"; 
     try { 
      Runtime r = Runtime.getRuntime(); 
      Process p = r.exec(evmCommand); 

      BufferedReader in = new BufferedReader(new 
      InputStreamReader(p.getInputStream())); 
      String inputLine; 
      while ((inputLine = in.readLine()) != null) { 
       System.out.println(inputLine); 
       evmResult += inputLine; 
      } 
      in.close(); 

     } catch (IOException e) { 
      System.out.println(e); 
     } 

    } 
} 

enter image description here

これは私が話してコードベースであります0

これまでのところ、私はそのコードがなぜ手の込んだ0xを出すことしかできないのか判断できなかった。私は誰かが私がこのエラーの原因を追跡するのを助けることができるかもしれないことを期待してこの質問を投稿しました。

答えて

-1

はこのようにそれを行う:

import java.io.*; 

class evmTest { 

public static void main(String[] args) { 
    String evmResult = ""; 

    String evmCommand = "evm --debug --code 7f00000000000000000000000000000000000000000000000000000000000000027f00000000000000000000000000000000000000000000000000000000000000027f00000000000000000000000000000000000000000000000000000000000000020101 run"; 
    try { 

     Runtime rt = Runtime.getRuntime(); 
     String command = "evm --debug --code 7f00000000000000000000000000000000000000000000000000000000000000027f00000000000000000000000000000000000000000000000000000000000000027f00000000000000000000000000000000000000000000000000000000000000020101 run"; 
     Process proc = rt.exec(command); 

     BufferedReader stdInput = new BufferedReader(new 
      InputStreamReader(proc.getInputStream())); 

     BufferedReader stdError = new BufferedReader(new 
      InputStreamReader(proc.getErrorStream())); 

     // read the output from the command 
     System.out.println("Here is the standard output of the command:\n"); 
     String s = null; 
     while ((s = stdInput.readLine()) != null) { 
      System.out.println(s); 
     } 

     // read any errors from the attempted command 
     System.out.println("Here is the standard error of the command (if any):\n"); 
     while ((s = stdError.readLine()) != null) { 
      System.out.println(s); 
     } 

    } catch (IOException e) { 
     System.out.println(e); 
    } 

} 

} 
+0

あなたが別のスレッドでこれらのストリームを読み、またはそれらをマージする必要があります。 – EJP

関連する問題