public ProcessWrapper execute(final Properties properties, final File workingDirectory)
      throws InterruptedException, TimeoutException {
    synchronized (exitValue) {
      if (starting) {
        throw new IllegalStateException("ProcessWrapper can only be executed once");
      }
      starting = true;
      processThread =
          new Thread(() -> start(properties, workingDirectory), "ProcessWrapper Process Thread");
    }
    processThread.start();

    waitForProcessStart();

    synchronized (exitValue) {
      if (processException != null) {
        logger.error("ProcessWrapper:execute failed with " + processException);
        processException.printStackTrace();
      }
    }

    if (useMainLauncher) {
      // to trigger MainLauncher delegation to inner main
      sendInput();
    }
    return this;
  }
Wraps spawned {@link Process} to capture output and provide interaction with the process.

@since GemFire 4.1.1
geode-junit/src/main/java/org/apache/geode/test/process/ProcessWrapper.java