package java.lang;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;
final class ConcreteProcess extends Process
{
public native void destroy ();
public int exitValue ()
{
if (! hasExited ())
throw new IllegalThreadStateException ("Process has not exited");
return exitCode;
}
public InputStream getErrorStream ()
{
return errorStream;
}
public InputStream getInputStream ()
{
return inputStream;
}
public OutputStream getOutputStream ()
{
return outputStream;
}
public native int waitFor () throws InterruptedException;
public ConcreteProcess (String[] progarray,
String[] envp,
File dir)
throws IOException
{
for (int i = 0; i < progarray.length; i++)
{
String s = progarray[i];
if ( (s.indexOf (' ') >= 0) || (s.indexOf ('\t') >= 0))
progarray[i] = "\"" + s + "\"";
}
startProcess (progarray, envp, dir);
}
private OutputStream outputStream;
private InputStream inputStream;
private InputStream errorStream;
private int procHandle;
private int exitCode;
private native boolean hasExited ();
private native void startProcess (String[] progarray,
String[] envp,
File dir)
throws IOException;
private native void cleanup ();
}