Prev Class | Next Class | Frames | No Frames |
Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Object
java.lang.ProcessBuilder
public final class ProcessBuilder
extends Object
ProcessBuilder
instance basically represent a
template for a new process. Actual processes are generated from
this template via use of the start()
method, which
may be invoked multiple times, with each invocation spawning a
new process with the current attributes of the
ProcessBuilder
object. Each spawned process is
independent of the ProcessBuilder
object, and is
unaffected by changes in its attributes.
The following attributes define a process:
user.dir
property.find -type f
invokes the find
binary with the arguments "-type" and "f".
The command is provided a list, the elements of which are defined in a
system dependent manner; the layout is affected by expected operating
system conventions. A common method is to split the command on each
space within the string. Thus, find -type f
forms a
three element list. However, in some cases, the expectation is that
this split is performed by the program itself; thus, the list consists
of only two elements (the program name and its arguments).System.getenv()
.Process.getOutputStream()
) and one for error data
(Process.getErrorStream()
). When set to true, the two are merged,
which simplifies the interleaving of the two streams. Data is read using
the stream returned by Process.getOutputStream()
, and the
stream returned by Process.getErrorStream()
throws an immediate
end-of-file exception.
All checks on attribute validity are delayed until start()
is called. ProcessBuilder
objects are not
synchronized; the user must provide external synchronization
where multiple threads may interact with the same
ProcessBuilder
object.
Process
, System.getenv()
Constructor Summary | |
| |
|
Method Summary | |
Map |
|
List |
|
ProcessBuilder |
|
ProcessBuilder |
|
File |
|
ProcessBuilder | |
boolean |
|
ProcessBuilder |
|
Process |
|
Methods inherited from class java.lang.Object | |
clone , equals , extends Object> getClass , finalize , hashCode , notify , notifyAll , toString , wait , wait , wait |
public ProcessBuilder(Listcommand)
Constructs a newProcessBuilder
with the specified command being used to invoke the process. The list is used directly; external changes are reflected in theProcessBuilder
.
- Parameters:
command
- the name of the program followed by its arguments.
public ProcessBuilder(java.lang.String... command)
Constructs a newProcessBuilder
with the specified command being used to invoke the process. This constructor simplifies creating a newProcessBuilder
by converting the provided series of constructor arguments into a list of command-line arguments.
- Parameters:
command
- the name of the program followed by its arguments.
public MapString> environment ()
Returns the system environment variables of the process. If the underlying system does not support environment variables, an empty map is returned.The returned map does not accept queries using null keys or values, or those of a type other than
String
. Attempts to pass in a null value will throw aNullPointerException
. Types other thanString
throw aClassCastException
.As the returned map is generated using data from the underlying platform, it may not comply with the
equals()
andhashCode()
contracts. It is also likely that the keys of this map will be case-sensitive.Modification of the map is reliant on the underlying platform; some may not allow any changes to the environment variables or may prevent certain values being used. Attempts to do so will throw an
UnsupportedOperationException
orIllegalArgumentException
, respectively.Use of this method may require a security check for the RuntimePermission "getenv.*".
- Returns:
- a map of the system environment variables for the process.
- Throws:
SecurityException
- if the checkPermission method of an installed security manager prevents access to the system environment variables.
- Since:
- 1.5
public Listcommand()
Returns the current command line, used to invoke the process. The return value is simply a reference to the list of command line arguments used by theProcessBuilder
object; any changes made to it will be reflected in the operation of theProcessBuilder
.
- Returns:
- the list of command-line arguments.
public ProcessBuilder command(Listcommand)
Sets the command-line arguments to those specified. The list is used directly; external changes are reflected in theProcessBuilder
.
- Parameters:
command
- the name of the program followed by its arguments.
- Returns:
- a reference to this process builder.
public ProcessBuilder command(java.lang.String... command)
Sets the command-line arguments to those specified. This simplifies modifying the arguments by converting the provided series of constructor arguments into a list of command-line arguments.
- Parameters:
command
- the name of the program followed by its arguments.
- Returns:
- a reference to this process builder.
public File directory()
Returns the working directory of the process. The returned value may benull
; this indicates that the default behaviour of using the working directory of the current process should be adopted.
- Returns:
- the working directory.
public ProcessBuilder directory(File directory)
Sets the working directory to that specified. The supplied argument may benull
, which indicates the default value should be used. The default is the working directory of the current process.
- Parameters:
directory
- the new working directory.
- Returns:
- a reference to this process builder.
public boolean redirectErrorStream()
Returns true if the output stream and error stream of the process will be merged to form one composite stream. The default return value isfalse
.
- Returns:
- true if the output stream and error stream are to be merged.
public ProcessBuilder redirectErrorStream(boolean redirect)
Sets the error stream redirection flag. If set, the output and error streams are merged to form one composite stream.
- Parameters:
redirect
- the new value of the redirection flag.
- Returns:
- a reference to this process builder.
public Process start() throws IOException
Starts execution of a new process, based on the attributes of thisProcessBuilder
object. This is the point at which the command-line arguments are checked. The list must be non-empty and contain only non-null string objects. The other attributes have default values which are used in cases where their values are not explicitly specified.If a security manager is in place, then the
SecurityManager.checkExec()
method is called to ensure that permission is given to execute the process.The execution of the process is system-dependent. Various exceptions may result, due to problems at the operating system level. These are all returned as a form of
IOException
.
- Returns:
- a
Process
object, representing the spawned subprocess.
- Throws:
IOException
- if a problem occurs with executing the process at the operating system level.IndexOutOfBoundsException
- if the command to execute is actually an empty list.NullPointerException
- if the command to execute is null or the list contains null elements.SecurityException
- if a security manager exists and prevents execution of the subprocess.