package org.gscript.process; import java.io.FileDescriptor; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import org.gscript.jni.JNIReference; public class SubProcess extends JNIReference { public static final int SIGHUP = 1; public static final int SIGKILL = 9; public SubProcess(String cmd, String[] args, String[] env) throws JNIReferenceException { super(nativeCreate(cmd, args, env)); } public void execute() { nativeExecute(getReferencePointer()); } public int waitFor() { return nativeWaitFor(getReferencePointer()); } public int sigKill(int signal) { return nativeSigKill(getReferencePointer(), signal); } FileDescriptor getFileDescriptor() { return nativeFileDescriptor(getReferencePointer()); } public InputStream getInputStream() { return new FileInputStream(getFileDescriptor()); } public OutputStream getOutputStream() { return new FileOutputStream(getFileDescriptor()); } public void resizeWindow(int rows, int cols, int width, int height) { nativeResizeWindow(getReferencePointer(), rows, cols, width, height); } private static native long nativeCreate(String cmd, String[] args, String[] env); private static native void nativeExecute(long pointer); private static native int nativeWaitFor(long pointer); private static native int nativeSigKill(long pointer, int signal); private static native FileDescriptor nativeFileDescriptor(long pointer); private static native void nativeResizeWindow(long pointer, int rows, int cols, int width, int height); }