Package org.apache.commons.exec
Interface Executor
-
- All Known Implementing Classes:
DaemonExecutor
,DefaultExecutor
public interface Executor
The main abstraction to start an external process. The interface allows to- set a current working directory for the subprocess
- provide a set of environment variables passed to the subprocess
- capture the subprocess output of stdout and stderr using an ExecuteStreamHandler
- kill long-running processes using an ExecuteWatchdog
- define a set of expected exit values
- terminate any started processes when the main process is terminating using a ProcessDestroyer
Executor exec = new DefaultExecutor(); CommandLine cl = new CommandLine("ls -l"); int exitvalue = exec.execute(cl);
-
-
Field Summary
Fields Modifier and Type Field Description static int
INVALID_EXITVALUE
Invalid exit code.
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description int
execute(CommandLine command)
Methods for starting synchronous execution.int
execute(CommandLine command, java.util.Map<java.lang.String,java.lang.String> environment)
Methods for starting synchronous execution.void
execute(CommandLine command, java.util.Map<java.lang.String,java.lang.String> environment, ExecuteResultHandler handler)
Methods for starting asynchronous execution.void
execute(CommandLine command, ExecuteResultHandler handler)
Methods for starting asynchronous execution.ProcessDestroyer
getProcessDestroyer()
Set the handler for cleanup of started processes if the main process is going to terminate.ExecuteStreamHandler
getStreamHandler()
Get the StreamHandler used for providing input and retrieving the output.ExecuteWatchdog
getWatchdog()
Get the watchdog used to kill of processes running, typically, too long time.java.io.File
getWorkingDirectory()
Get the working directory of the created process.boolean
isFailure(int exitValue)
Checks whetherexitValue
signals a failure.void
setExitValue(int value)
Define theexitValue
of the process to be considered successful.void
setExitValues(int[] values)
Define a list ofexitValue
of the process to be considered successful.void
setProcessDestroyer(ProcessDestroyer processDestroyer)
Get the handler for cleanup of started processes if the main process is going to terminate.void
setStreamHandler(ExecuteStreamHandler streamHandler)
Set a custom the StreamHandler used for providing input and retrieving the output.void
setWatchdog(ExecuteWatchdog watchDog)
Set the watchdog used to kill of processes running, typically, too long time.void
setWorkingDirectory(java.io.File dir)
Set the working directory of the created process.
-
-
-
Field Detail
-
INVALID_EXITVALUE
static final int INVALID_EXITVALUE
Invalid exit code.- See Also:
- Constant Field Values
-
-
Method Detail
-
setExitValue
void setExitValue(int value)
Define theexitValue
of the process to be considered successful. If a different exit value is returned by the process thenexecute(CommandLine)
will throw anExecuteException
- Parameters:
value
- the exit code representing successful execution
-
setExitValues
void setExitValues(int[] values)
Define a list ofexitValue
of the process to be considered successful. The caller can pass one of the following values- an array of exit values to be considered successful
- an empty array for auto-detect of successful exit codes relying on
isFailure(int)
- null to indicate to skip checking of exit codes
execute(CommandLine)
will throw anExecuteException
.- Parameters:
values
- a list of the exit codes
-
isFailure
boolean isFailure(int exitValue)
Checks whetherexitValue
signals a failure. If no exit values are set than the default conventions of the OS is used. e.g. most OS regard an exit code of '0' as successful execution and everything else as failure.- Parameters:
exitValue
- the exit value (return code) to be checked- Returns:
true
ifexitValue
signals a failure
-
getStreamHandler
ExecuteStreamHandler getStreamHandler()
Get the StreamHandler used for providing input and retrieving the output.- Returns:
- the StreamHandler
-
setStreamHandler
void setStreamHandler(ExecuteStreamHandler streamHandler)
Set a custom the StreamHandler used for providing input and retrieving the output. If you don't provide a proper stream handler the executed process might block when writing to stdout and/or stderr (seeProcess
).- Parameters:
streamHandler
- the stream handler
-
getWatchdog
ExecuteWatchdog getWatchdog()
Get the watchdog used to kill of processes running, typically, too long time.- Returns:
- the watchdog
-
setWatchdog
void setWatchdog(ExecuteWatchdog watchDog)
Set the watchdog used to kill of processes running, typically, too long time.- Parameters:
watchDog
- the watchdog
-
getProcessDestroyer
ProcessDestroyer getProcessDestroyer()
Set the handler for cleanup of started processes if the main process is going to terminate.- Returns:
- the ProcessDestroyer
-
setProcessDestroyer
void setProcessDestroyer(ProcessDestroyer processDestroyer)
Get the handler for cleanup of started processes if the main process is going to terminate.- Parameters:
processDestroyer
- the ProcessDestroyer
-
getWorkingDirectory
java.io.File getWorkingDirectory()
Get the working directory of the created process.- Returns:
- the working directory
-
setWorkingDirectory
void setWorkingDirectory(java.io.File dir)
Set the working directory of the created process. The working directory must exist when you start the process.- Parameters:
dir
- the working directory
-
execute
int execute(CommandLine command) throws ExecuteException, java.io.IOException
Methods for starting synchronous execution. The child process inherits all environment variables of the parent process.- Parameters:
command
- the command to execute- Returns:
- process exit value
- Throws:
ExecuteException
- execution of subprocess failed or the subprocess returned a exit value indicating a failuresetExitValue(int)
.java.io.IOException
-
execute
int execute(CommandLine command, java.util.Map<java.lang.String,java.lang.String> environment) throws ExecuteException, java.io.IOException
Methods for starting synchronous execution.- Parameters:
command
- the command to executeenvironment
- The environment for the new process. If null, the environment of the current process is used.- Returns:
- process exit value
- Throws:
ExecuteException
- execution of subprocess failed or the subprocess returned a exit value indicating a failuresetExitValue(int)
.java.io.IOException
-
execute
void execute(CommandLine command, ExecuteResultHandler handler) throws ExecuteException, java.io.IOException
Methods for starting asynchronous execution. The child process inherits all environment variables of the parent process. Result provided to callback handler.- Parameters:
command
- the command to executehandler
- capture process termination and exit code- Throws:
ExecuteException
- execution of subprocess failedjava.io.IOException
-
execute
void execute(CommandLine command, java.util.Map<java.lang.String,java.lang.String> environment, ExecuteResultHandler handler) throws ExecuteException, java.io.IOException
Methods for starting asynchronous execution. The child process inherits all environment variables of the parent process. Result provided to callback handler.- Parameters:
command
- the command to executeenvironment
- The environment for the new process. If null, the environment of the current process is used.handler
- capture process termination and exit code- Throws:
ExecuteException
- execution of subprocess failedjava.io.IOException
-
-