public abstract class CommandLineUtils extends Object
| Modifier and Type | Class and Description |
|---|---|
private static class |
CommandLineUtils.ProcessHook |
static class |
CommandLineUtils.StringStreamConsumer |
| Constructor and Description |
|---|
CommandLineUtils() |
| Modifier and Type | Method and Description |
|---|---|
static int |
executeCommandLine(Commandline cl,
InputStream systemIn,
StreamConsumer systemOut,
StreamConsumer systemErr,
int timeoutInSeconds) |
static int |
executeCommandLine(Commandline cl,
StreamConsumer systemOut,
StreamConsumer systemErr) |
static CommandLineCallable |
executeCommandLineAsCallable(Commandline cl,
InputStream systemIn,
StreamConsumer systemOut,
StreamConsumer systemErr,
int timeoutInSeconds)
Immediately forks a process,
returns a callable that will block until process is complete.
|
static Properties |
getSystemEnvVars()
Gets the shell environment variables for this process.
|
static Properties |
getSystemEnvVars(boolean caseSensitive)
Return the shell environment variables.
|
static boolean |
isAlive(Process p) |
static String |
quote(String argument)
|
static String |
quote(String argument,
boolean wrapExistingQuotes)
|
static String |
quote(String argument,
boolean escapeSingleQuotes,
boolean escapeDoubleQuotes,
boolean wrapExistingQuotes)
|
static String |
toString(String[] line) |
static String[] |
translateCommandline(String toProcess) |
private static void |
waitForAllPumpers(StreamFeeder inputFeeder,
StreamPumper outputPumper,
StreamPumper errorPumper) |
public static int executeCommandLine(Commandline cl, StreamConsumer systemOut, StreamConsumer systemErr) throws CommandLineException
CommandLineException - (without CommandLineTimeOutException) if
Runtime.exec(String, String[], File) fails
throwing an IOException.
CommandLineTimeOutException - Wrapping an InterruptedException
on the process to be executed thrown by Process.waitFor().public static int executeCommandLine(Commandline cl, InputStream systemIn, StreamConsumer systemOut, StreamConsumer systemErr, int timeoutInSeconds) throws CommandLineException
cl - The command line to executesystemIn - The input to read from, must be thread safesystemOut - A consumer that receives output, must be thread safesystemErr - A consumer that receives system error stream output,
must be thread safetimeoutInSeconds - Positive integer to specify timeout,
zero and negative integers for no timeout.Process.exitValue()CommandLineException - (without CommandLineTimeOutException) if
Runtime.exec(String, String[], File) fails
throwing an IOException.
CommandLineTimeOutException - Wrapping an InterruptedException
on the process to be executed:
If timeoutInSeconds<=0
thrown by Process.waitFor().
If timeoutInSeconds > 0 thrown
Thread.sleep(long)
isAlive(Process) holds.
waitForAllPumpers(StreamFeeder, StreamPumper, StreamPumper)
public static CommandLineCallable executeCommandLineAsCallable(Commandline cl, InputStream systemIn, StreamConsumer systemOut, StreamConsumer systemErr, int timeoutInSeconds) throws CommandLineException
cl - The command line to executesystemIn - The input to read from, must be thread safesystemOut - A consumer that receives output, must be thread safesystemErr - A consumer that receives system error stream output,
must be thread safetimeoutInSeconds - Positive integer to specify timeout,
zero and negative integers for no timeout.Process.exitValue(). "call" must be called on
this to be sure the forked process has terminated,
no guarantees is made about any internal state
before after the completion of the call statements
It is documented in which cases the return value throws exceptions
if CommandLineCallable.call() is executed.
CommandLineException - or CommandLineTimeOutException:
see Commandline.execute().private static void waitForAllPumpers(StreamFeeder inputFeeder, StreamPumper outputPumper, StreamPumper errorPumper) throws InterruptedException
InterruptedException - if one of the parameters waitUntilDone throws such an exception.public static Properties getSystemEnvVars()
getSystemEnvVars().get("path")
and getSystemEnvVars().get("PATH")
will in general return different values.
However, on platforms
with case-insensitive environment variables like Windows,
all variable names will be normalized to upper case.null.System.getenv() API, new in JDK 5.0, to get the same result
since 2.0.2 System#getenv() will be used
if available in the current running jvm.public static Properties getSystemEnvVars(boolean caseSensitive)
caseSensitive == true, then envar
keys will all be upper-case.caseSensitive - Whether environment variable keys should be treated case-sensitively.System.getenv() API, new in JDK 5.0, to get the same result
since 2.0.2 System#getenv() will be used
if available in the current running jvm.public static boolean isAlive(Process p)
public static String[] translateCommandline(String toProcess) throws CommandLineException
CommandLineException - If the quotes are not ballancedpublic static String quote(String argument) throws CommandLineException
StringUtils.quoteAndEscape(String, char, char[], char[], char, boolean),
StringUtils.quoteAndEscape(String, char, char[], char, boolean)
or
StringUtils.quoteAndEscape(String, char) instead.Put quotes around the given String if necessary.
If the argument doesn't include spaces or quotes, return it as is. If it contains double quotes, use single quotes - else surround the argument by double quotes.
CommandLineException - if the argument contains both, single and double quotes.public static String quote(String argument, boolean wrapExistingQuotes) throws CommandLineException
StringUtils.quoteAndEscape(String, char, char[], char[], char, boolean),
StringUtils.quoteAndEscape(String, char, char[], char, boolean)
or
StringUtils.quoteAndEscape(String, char) instead.Put quotes around the given String if necessary.
If the argument doesn't include spaces or quotes, return it as is. If it contains double quotes, use single quotes - else surround the argument by double quotes.
CommandLineException - if the argument contains both, single and double quotes.public static String quote(String argument, boolean escapeSingleQuotes, boolean escapeDoubleQuotes, boolean wrapExistingQuotes) throws CommandLineException
StringUtils.quoteAndEscape(String, char, char[], char[], char, boolean),
StringUtils.quoteAndEscape(String, char, char[], char, boolean)
or
StringUtils.quoteAndEscape(String, char) instead.CommandLineExceptionCopyright © 2016–2018 Simuline Organization (l2r). All rights reserved.