2017-11-02 7 views
0

を書いて、することが可能である:オープン2つの読み取り用の端子と私は私のJavaプログラムは、OSネイティブの端末(CMD.EXEまたはxterm)などで起動した場合

  1. System.inとして読み込み/書き込みのため、現在の端末をキープ現状ではとSystem.out
  2. オープンNewTerm.inNewTerm.out

として書き込み/読み出しのための別の端末、私が行うように見えることができるすべては、第二ターミナルを開いています。私はそれに書き込むことはできません(私はBufferedWriterで試しました)、コマンドを表示する唯一の方法は、それらのコマンドが開かれて発行されたかどうかです(すなわち、Runtime.getRuntime("xterm ls")またはProcessBuilder(command).start(); commandString[]です)。

出力を比較できるように、2つの端子を開いたままにしておきたいと思います。次のように順序は次のようになります。第二の端子における第一の端子

  • 発行コマンドの最初の端末で

    • 実行プログラム
    • スポーン第二端子
    • 発行コマンド
    • 第1端子出力
    • を読みます第2ターミナル出力を読む

    これは可能ですか?ル?ここで

    は、私は新しいターミナルを開いたが、開封後は、それへの書き込みを傾ける方法です:

    public class InterFace { 
        public static void main(String[] args) { 
         try { 
          Process p = Runtime.getRuntime().exec("xterm"); 
          BufferedWriter w = new BufferedWriter(new OutputStreamWriter(p.getOutputStream())); 
    
          w.write("ls"); 
          w.flush(); 
          w.close(); 
    
          BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream())); 
    
          String s; 
          while ((s = r.readLine()) != null) { 
           System.out.println(s); 
          } 
         } 
         catch (IOException io) { 
          io.printStackTrace(); 
         } 
        } 
    } 
    
  • 答えて

    1

    あなたは、コマンドの後に行区切りが必要です。

    w.write("ls" + System.lineSeparator()); 
    
    関連する問題