aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/lang/Process.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/lang/Process.java')
-rw-r--r--libjava/java/lang/Process.java81
1 files changed, 46 insertions, 35 deletions
diff --git a/libjava/java/lang/Process.java b/libjava/java/lang/Process.java
index d8c5da5..e5df417 100644
--- a/libjava/java/lang/Process.java
+++ b/libjava/java/lang/Process.java
@@ -1,5 +1,5 @@
-/* Process.java - Represent spawned system process.
- Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc.
+/* Process.java - Represent spawned system process
+ Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -7,7 +7,7 @@ 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
@@ -41,71 +41,83 @@ 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
+ * 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
- *
+ *
+ * <p>This is dependent on the platform, and some processes (like native
+ * windowing processes, 16-bit processes in Windows, or shell scripts) may
+ * be limited in functionality. Because some platforms have limited buffers
+ * between processes, you may need to provide input and read output to prevent
+ * the process from blocking, or even deadlocking.
+ *
+ * <p>Even if all references to this object disapper, the process continues
+ * to execute to completion. There are no guarantees that the
+ * subprocess execute asynchronously or concurrently with the process which
+ * owns this object.
+ *
* @author Brian Jones
* @author Tom Tromey <tromey@cygnus.com>
+ * @see Runtime#exec(String[], String[], File)
+ * @since 1.0
+ * @status updated to 1.4
*/
public abstract class Process
{
/**
* Empty constructor does nothing.
*/
- public Process() { }
+ 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.
+ * Obtain the output stream that sends data to the subprocess. This is
+ * the STDIN of the subprocess. When implementing, you should probably
+ * use a buffered stream.
+ *
+ * @return the output stream that pipes to the process input
*/
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.
+ * Obtain the input stream that receives data from the subprocess. This is
+ * the STDOUT of the subprocess. When implementing, you should probably
+ * use a buffered stream.
+ *
+ * @return the input stream that pipes data from the process output
*/
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.
+ * Obtain the input stream that receives data from the subprocess. This is
+ * the STDERR of the subprocess. When implementing, you should probably
+ * use a buffered stream.
+ *
+ * @return the input stream that pipes data from the process error output
*/
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
+ * 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.
+ * @return the subprocess exit value; 0 conventionally denotes success
+ * @throws InterruptedException if another thread interrups the blocked one
*/
- public abstract int waitFor()
- throws InterruptedException;
+ 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
+ * 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.
+ * @return the exit value of the subprocess
+ * @throws IllegalThreadStateException if the subprocess has not terminated
*/
public abstract int exitValue();
@@ -113,5 +125,4 @@ public abstract class Process
* Kills the subprocess and all of its children forcibly.
*/
public abstract void destroy();
-
-}
+} // class Process