org.apache.oodt.commons.exec
Class ExecHelper

java.lang.Object
  extended by org.apache.oodt.commons.exec.ExecHelper

public final class ExecHelper
extends Object

This class is taken from Stephen Ostermiller's example at: http://ostermiller.org/utils/ExecHelper.java.html It provides some useful methods for manipulating and reading in the output of a Process resultant from a call to Runtime.getRuntime() without using the Process.waitFor() method, which apparently can hang on certain underlying systems.

Author:
mattmann

Method Summary
static ExecHelper exec(String[] cmdarray)
          Executes the specified command and arguments in a separate process, and waits for the process to finish.
static ExecHelper exec(String[] cmdarray, String charset)
          Executes the specified command and arguments in a separate process, and waits for the process to finish.
static ExecHelper exec(String[] cmdarray, String[] envp)
          Executes the specified command and arguments in a separate process, and waits for the process to finish.
static ExecHelper exec(String[] cmdarray, String[] envp, File dir)
          Executes the specified command and arguments in a separate process, and waits for the process to finish.
static ExecHelper exec(String[] cmdarray, String[] envp, File dir, String charset)
          Executes the specified command and arguments in a separate process, and waits for the process to finish.
static ExecHelper exec(String[] cmdarray, String[] envp, String charset)
          Executes the specified command and arguments in a separate process, and waits for the process to finish.
static ExecHelper execUsingShell(String command)
          Executes the specified command using a shell.
static ExecHelper execUsingShell(String command, String charset)
          Executes the specified command using a shell.
 String getError()
          Get the error output of the job that ran.
 String getOutput()
          Get the output of the job that ran.
 int getStatus()
          Get the status of the job that ran.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

exec

public static ExecHelper exec(String[] cmdarray)
                       throws IOException
Executes the specified command and arguments in a separate process, and waits for the process to finish.

Output from the process is expected to be text in the system's default character set.

No input is passed to the process on STDIN.

Parameters:
cmdarray - array containing the command to call and its arguments.
Returns:
The results of the execution in an ExecHelper object.
Throws:
SecurityException - if a security manager exists and its checkExec method doesn't allow creation of a subprocess.
IOException - - if an I/O error occurs
NullPointerException - - if cmdarray is null
IndexOutOfBoundsException - - if cmdarray is an empty array (has length 0).

exec

public static ExecHelper exec(String[] cmdarray,
                              String[] envp)
                       throws IOException
Executes the specified command and arguments in a separate process, and waits for the process to finish.

Output from the process is expected to be text in the system's default character set.

No input is passed to the process on STDIN.

Parameters:
cmdarray - array containing the command to call and its arguments.
envp - array of strings, each element of which has environment variable settings in format name=value.
Returns:
The results of the execution in an ExecHelper object.
Throws:
SecurityException - if a security manager exists and its checkExec method doesn't allow creation of a subprocess.
IOException - - if an I/O error occurs
NullPointerException - - if cmdarray is null
IndexOutOfBoundsException - - if cmdarray is an empty array (has length 0).

exec

public static ExecHelper exec(String[] cmdarray,
                              String[] envp,
                              File dir)
                       throws IOException
Executes the specified command and arguments in a separate process, and waits for the process to finish.

Output from the process is expected to be text in the system's default character set.

No input is passed to the process on STDIN.

Parameters:
cmdarray - array containing the command to call and its arguments.
envp - array of strings, each element of which has environment variable settings in format name=value.
dir - the working directory of the subprocess, or null if the subprocess should inherit the working directory of the current process.
Returns:
The results of the execution in an ExecHelper object.
Throws:
SecurityException - if a security manager exists and its checkExec method doesn't allow creation of a subprocess.
IOException - - if an I/O error occurs
NullPointerException - - if cmdarray is null
IndexOutOfBoundsException - - if cmdarray is an empty array (has length 0).

exec

public static ExecHelper exec(String[] cmdarray,
                              String charset)
                       throws IOException
Executes the specified command and arguments in a separate process, and waits for the process to finish.

No input is passed to the process on STDIN.

Parameters:
cmdarray - array containing the command to call and its arguments.
charset - Output from the executed command is expected to be in this character set.
Returns:
The results of the execution in an ExecHelper object.
Throws:
SecurityException - if a security manager exists and its checkExec method doesn't allow creation of a subprocess.
IOException - - if an I/O error occurs
NullPointerException - - if cmdarray is null
IndexOutOfBoundsException - - if cmdarray is an empty array (has length 0).

exec

public static ExecHelper exec(String[] cmdarray,
                              String[] envp,
                              String charset)
                       throws IOException
Executes the specified command and arguments in a separate process, and waits for the process to finish.

No input is passed to the process on STDIN.

Parameters:
cmdarray - array containing the command to call and its arguments.
envp - array of strings, each element of which has environment variable settings in format name=value.
charset - Output from the executed command is expected to be in this character set.
Returns:
The results of the execution in an ExecHelper object.
Throws:
SecurityException - if a security manager exists and its checkExec method doesn't allow creation of a subprocess.
IOException - - if an I/O error occurs
NullPointerException - - if cmdarray is null
IndexOutOfBoundsException - - if cmdarray is an empty array (has length 0).

exec

public static ExecHelper exec(String[] cmdarray,
                              String[] envp,
                              File dir,
                              String charset)
                       throws IOException
Executes the specified command and arguments in a separate process, and waits for the process to finish.

No input is passed to the process on STDIN.

Parameters:
cmdarray - array containing the command to call and its arguments.
envp - array of strings, each element of which has environment variable settings in format name=value.
dir - the working directory of the subprocess, or null if the subprocess should inherit the working directory of the current process.
charset - Output from the executed command is expected to be in this character set.
Returns:
The results of the execution in an ExecHelper object.
Throws:
SecurityException - if a security manager exists and its checkExec method doesn't allow creation of a subprocess.
IOException - - if an I/O error occurs
NullPointerException - - if cmdarray is null
IndexOutOfBoundsException - - if cmdarray is an empty array (has length 0).

execUsingShell

public static ExecHelper execUsingShell(String command)
                                 throws IOException
Executes the specified command using a shell. On windows uses cmd.exe or command.exe. On other platforms it uses /bin/sh.

A shell should be used to execute commands when features such as file redirection, pipes, argument parsing are desired.

Output from the process is expected to be text in the system's default character set.

No input is passed to the process on STDIN.

Parameters:
command - String containing a command to be parsed by the shell and executed.
Returns:
The results of the execution in an ExecHelper object.
Throws:
SecurityException - if a security manager exists and its checkExec method doesn't allow creation of a subprocess.
IOException - - if an I/O error occurs
NullPointerException - - if command is null

execUsingShell

public static ExecHelper execUsingShell(String command,
                                        String charset)
                                 throws IOException
Executes the specified command using a shell. On windows uses cmd.exe or command.exe. On other platforms it uses /bin/sh.

A shell should be used to execute commands when features such as file redirection, pipes, argument parsing are desired.

No input is passed to the process on STDIN.

Parameters:
command - String containing a command to be parsed by the shell and executed.
charset - Output from the executed command is expected to be in this character set.
Returns:
The results of the execution in an ExecHelper object.
Throws:
SecurityException - if a security manager exists and its checkExec method doesn't allow creation of a subprocess.
IOException - - if an I/O error occurs
NullPointerException - - if command is null

getOutput

public String getOutput()
Get the output of the job that ran.

Returns:
Everything the executed process wrote to its standard output as a String.

getError

public String getError()
Get the error output of the job that ran.

Returns:
Everything the executed process wrote to its standard error as a String.

getStatus

public int getStatus()
Get the status of the job that ran.

Returns:
exit status of the executed process, by convention, the value 0 indicates normal termination.


Copyright © 1999-2013
Apache OODT. All Rights Reserved.