Esempio n. 1
0
  public void terminateClean() throws Exception {
    sig_interrupt.setValue(true);

    if (_outputList.size() > 1) {
      CharPump p1 = _outputList.get(0);
      if (p1 != null) {
        synchronized (p1) {
          p1.wait(1000);
        }
      }

      CharPump p2 = _outputList.get(1);

      if (p2 != null) {
        synchronized (p2) {
          p2.wait(1000);
        }
      }
    }
    cleanUpProcess();
  }
Esempio n. 2
0
  private static int handleProcessStatic(
      Process pProcess,
      String pOrigCmd,
      Writer pOut,
      Writer pErr,
      List<CharPump> stdOutErrList,
      MutableBoolean interrupt)
      throws InterruptedException {

    CharPump outpump =
        new CharPump(
            new BufferedReader(new InputStreamReader(pProcess.getInputStream())),
            pOut,
            pOrigCmd,
            interrupt);
    stdOutErrList.add(outpump);
    CharPump errpump =
        new CharPump(
            new BufferedReader(new InputStreamReader(pProcess.getErrorStream())),
            pErr,
            pOrigCmd,
            interrupt);
    stdOutErrList.add(errpump);
    outpump.start();
    errpump.start();
    outpump.join();
    errpump.join();

    if (_log.isInfoEnabled()) _log.info("Waiting for '" + pOrigCmd + "' to complete.");
    int status = pProcess.waitFor();

    return status;
  }