code: public int waitFor() throws InterruptedException
    {
      if(_process == null)
        throw new IllegalStateException("you must call start first");
  
      _out.join();
      _err.join();
      return _process.waitFor();
    }
docs: Properly waits until everything is complete: joins on the thread that
  reads the output, joins on the thread that reads the error and finally
  wait for the process to be finished.
  @return the status code of the process.
  
  @throws InterruptedException