| // PosixProcess.java - Subclass of Process for POSIX systems. | |
| /* Copyright (C) 1998, 1999 Free Software Foundation | |
| This file is part of libgcj. | |
| This software is copyrighted work licensed under the terms of the | |
| Libgcj License. Please consult the file "LIBGCJ_LICENSE" for | |
| details. */ | |
| package java.lang; | |
| import java.io.InputStream; | |
| import java.io.OutputStream; | |
| import java.io.IOException; | |
| /** | |
| * @author Tom Tromey <tromey@cygnus.com> | |
| * @date May 3, 1999 | |
| */ | |
| // This is entirely internal to our implementation. | |
| // This file is copied to `ConcreteProcess.java' before compilation. | |
| // Hence the class name apparently does not match the file name. | |
| final class ConcreteProcess extends Process | |
| { | |
| public native void destroy (); | |
| public int exitValue () | |
| { | |
| if (! hasExited) | |
| throw new IllegalThreadStateException("Process has not exited"); | |
| return status; | |
| } | |
| public InputStream getErrorStream () | |
| { | |
| return errorStream; | |
| } | |
| public InputStream getInputStream () | |
| { | |
| return inputStream; | |
| } | |
| public OutputStream getOutputStream () | |
| { | |
| return outputStream; | |
| } | |
| public native int waitFor () throws InterruptedException; | |
| // This is used for actual initialization, as we can't write a | |
| // native constructor. | |
| public native void startProcess (String[] progarray, String[] envp) | |
| throws IOException; | |
| // This file is copied to `ConcreteProcess.java' before | |
| // compilation. Hence the constructor name apparently does not | |
| // match the file name. | |
| public ConcreteProcess (String[] progarray, String[] envp) throws IOException | |
| { | |
| startProcess (progarray, envp); | |
| } | |
| // The process id. This is cast to a pid_t on the native side. | |
| private long pid; | |
| // True when child has exited. | |
| private boolean hasExited; | |
| // The exit status, if the child has exited. | |
| private int status; | |
| // The streams. | |
| private InputStream errorStream; | |
| private InputStream inputStream; | |
| private OutputStream outputStream; | |
| } |