title: Java Process with Input/Output Stream
body: <p>I have the following code example below. Whereby you can enter a command to the bash shell i.e. <code>echo test</code> and have the result echo'd back. However, after the first read. Other output streams don't work?</p>
  
  <p>Why is this or am I doing something wrong? My end goal is to created a Threaded scheduled task that executes a command periodically to /bash so the <code>OutputStream</code> and <code>InputStream</code> would have to work in tandem and not stop working. I have also been experiencing the error <code>java.io.IOException: Broken pipe</code> any ideas?</p>
  
  <p>Thanks.</p>
  
  <pre><code>String line;
  Scanner scan = new Scanner(System.in);
  
  Process process = Runtime.getRuntime ().exec ("/bin/bash");
  OutputStream stdin = process.getOutputStream ();
  InputStream stderr = process.getErrorStream ();
  InputStream stdout = process.getInputStream ();
  
  BufferedReader reader = new BufferedReader (new InputStreamReader(stdout));
  BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));
  
  String input = scan.nextLine();
  input += "\n";
  writer.write(input);
  writer.flush();
  
  input = scan.nextLine();
  input += "\n";
  writer.write(input);
  writer.flush();
  
  while ((line = reader.readLine ()) != null) {
  System.out.println ("Stdout: " + line);
  }
  
  input = scan.nextLine();
  input += "\n";
  writer.write(input);
  writer.close();
  
  while ((line = reader.readLine ()) != null) {
  System.out.println ("Stdout: " + line);
  }
  </code></pre>