| /* Process.java - Represent spawned system process. |
| Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc. |
| |
| This file is part of GNU Classpath. |
| |
| GNU Classpath is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation; either version 2, or (at your option) |
| any later version. |
| |
| GNU Classpath is distributed in the hope that it will be useful, but |
| WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with GNU Classpath; see the file COPYING. If not, write to the |
| Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA |
| 02111-1307 USA. |
| |
| As a special exception, if you link this library with other files to |
| produce an executable, this library does not by itself cause the |
| resulting executable to be covered by the GNU General Public License. |
| This exception does not however invalidate any other reasons why the |
| executable file might be covered by the GNU General Public License. */ |
| |
| |
| package java.lang; |
| |
| import java.io.OutputStream; |
| import java.io.InputStream; |
| |
| /* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3 |
| */ |
| |
| /** |
| * An instance of a subclass of <code>Process</code> is created by the |
| * <code>Runtime.exec</code> methods. Methods in <code>Process</code> |
| * provide a means to send input to a process, obtain the output from a |
| * subprocess, destroy a subprocess, obtain the exit value from a |
| * subprocess, and wait for a subprocess to complete. |
| * |
| * @since JDK 1.0 |
| * |
| * @author Brian Jones |
| * @author Tom Tromey <tromey@cygnus.com> |
| */ |
| public abstract class Process |
| { |
| /** |
| * Empty constructor does nothing. |
| */ |
| public Process() { } |
| |
| /** |
| * Obtain the output stream of the subprocess. It may help to |
| * associate this stream as the redirected STDIN file descriptor of |
| * the subprocess. |
| */ |
| public abstract OutputStream getOutputStream(); |
| |
| /** |
| * Obtain the input stream of the subprocess. It may help to |
| * associate this stream as the redirected STDOUT file descriptor of |
| * the subprocess. |
| */ |
| public abstract InputStream getInputStream(); |
| |
| /** |
| * Obtain the error input stream of the subprocess. It may help to |
| * associate this stream as the redirected STDERR file descriptor of |
| * the subprocess. |
| */ |
| public abstract InputStream getErrorStream(); |
| |
| /** |
| * The thread calling <code>waitFor</code> will block until the subprocess |
| * has terminated. If the process has already terminated then the method |
| * immediately returns with the exit value of the subprocess. |
| * |
| * @returns the exit value of the subprocess. A return of <code>0</code> |
| * denotes normal process termination by convention. |
| * |
| * @throws InterruptedException is thrown if another thread interrupts |
| * the waiting thread. The waiting thread stops waiting. |
| */ |
| public abstract int waitFor() |
| throws InterruptedException; |
| |
| /** |
| * When a process terminates there is associated with that termination |
| * an exit value for the process to indicate why it terminated. A return |
| * of <code>0</code> denotes normal process termination by convention. |
| * |
| * @returns the exit value of the subprocess. |
| * @throws IllegalThreadStateException is thrown if the subprocess |
| * represented by the subclass of this class has not yet terminated. |
| */ |
| public abstract int exitValue(); |
| |
| /** |
| * Kills the subprocess and all of its children forcibly. |
| */ |
| public abstract void destroy(); |
| |
| } |