try {
p = r.exec("notepad");
} catch (Exception e) {
System.out.println("Error executing notepad.");
There are several alternative forms of exec( ), but the one shown in the example is the most
common. The Process object returned by exec( ) can be manipulated by Process' methods after
the new program starts running. You can kill the subprocess with the destroy( ) method. The
waitFor( ) method causes your program to wait until the subprocess finishes. The exitValue( )
method returns the value returned by the subprocess when it is finished. This is typically 0
if no problems occur. Here is the preceding exec( ) example modified to wait for the running
process to exit:
// Wait until notepad is terminated.
class ExecDemoFini {
public static void main(String args[]) {
Runtime r = Runtime.getRuntime();
Process p = null;
try {
p = r.exec("notepad");
} catch (Exception e) {
System.out.println("Error executing notepad.");
System.out.println("Notepad returned " + p.exitValue());
While a subprocess is running, you can write to and read from its standard input and
output. The getOutputStream( ) and getInputStream( ) methods return the handles to
standard in and out of the subprocess. (I/O is examined in detail in Chapter 19.)
ProcessBuilder provides another way to start and manage processes (that is, programs). As
explained earlier, all processes are represented by the Process class, and a process can be
started by Runtime.exec( ). ProcessBuilder offers more control over the processes. For
example, you can set the current working directory and change environmental parameters.
ProcessBuilder defines these constructors:
ProcessBuilder(List<String> args)
ProccessBuilder(String ... args)
Here, args is a list of arguments that specify the name of the program to be executed along
with any required command-line arguments. In the first constructor, the arguments are
passed in a List. In the second, they are specified through a varargs parameter. Table 16-12
describes the methods defined by ProcessBuilder.
Search WWH :
Custom Search
Previous Page
Java SE 6 Topic Index
Next Page
Java SE 6 Bookmarks