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());
}
};
}