Function std.process.executeShell
Executes the given program or shell
command
and returns its exit
code and output.
and execute
start a new process using
executeShell
spawnProcess
and spawnShell
, respectively, and wait
for the process to complete before returning. The functions capture
what the child process prints to both its standard output and
standard error streams, and return this together with its exit code.
auto dmd = execute(["dmd", "myapp.d"]); if (dmd.status != 0) writeln("Compilation failed:\n", dmd.output); auto ls = executeShell("ls -l"); if (ls.status != 0) writeln("Failed to retrieve file listing"); else writeln(ls.output);
The args
/program
/
, command
and env
parameters are forwarded straight to the underlying spawn functions,
and we refer to their documentation for details.
config
Prototype
auto Tuple!(int,"status",string,"output") executeShell( const(char[]) command, const(string[string]) env = cast(const(string[string]))null, Config config = cast(Config)0, ulong maxOutput = 18446744073709551615LU, const(char[]) workDir = null ) @trusted;
Parameters
Name | Description |
---|---|
args | An array which contains the program name as the zeroth element
and any command -line arguments in the following elements.
(See spawnProcess for details.) |
program | The program name, without command -line arguments.
(See spawnProcess for details.) |
command | A shell command which is passed verbatim to the command
interpreter. (See spawnShell for details.) |
env | Additional environment variables for the child process.
(See spawnProcess for details.) |
config | Flags that control process creation. See Config
for an overview of available flags, and note that the
retainStd... flags have no effect in this function. |
maxOutput | The maximum number of bytes of output that should be captured. |
workDir | The working directory for the new process. By default the child process inherits the parent's working directory. |
Returns
An
.
std.typecons.Tuple
!(int, "status", string, "output")
POSIX specific
If the process is terminated by a signal, the status
field of
the return value will contain a negative number whose absolute
value is the signal number. (See wait
for details.)
Throws
ProcessException
on failure to start the process.
std.stdio.StdioException
on failure to capture output.
Authors
Lars Tandle Kyllingstad, Steven Schveighoffer, Vladimir Panteleev