public Forker()

in taverna-server-unix-forker/src/main/java/org/apache/taverna/server/unixforker/Forker.java [154:196]


	public Forker(ProcessBuilder pb) throws IOException {
		out.println("Starting subprocess: " + pb.command());
		final Process p = pb.start();
		abstract class ProcessAttachedDaemon extends Thread {
			public ProcessAttachedDaemon() {
				setDaemon(true);
				start();
			}

			abstract void act() throws Exception;

			@Override
			public final void run() {
				try {
					act();
					p.waitFor();
				} catch (InterruptedException e) {
					// Just drop
				} catch (Exception e) {
					p.destroy();
					e.printStackTrace(err);
				}
			}
		}
		new ProcessAttachedDaemon() {
			@Override
			void act() throws Exception {
				copyFromSudo("Subprocess(out):", p.getInputStream());
			}
		};
		new ProcessAttachedDaemon() {
			@Override
			void act() throws Exception {
				copyFromSudo("Subprocess(err):", p.getErrorStream());
			}
		};
		new ProcessAttachedDaemon() {
			@Override
			void act() throws Exception {
				interactWithSudo(p.getOutputStream());
			}
		};
	}