Expand description
Execution of and interaction with external processes and pipelines.
The entry points to the crate are the Popen struct and the Exec
builder. Popen is the interface to a running child process, inspired by
Python’s subprocess.Popen. Exec provides a builder-pattern API with
convenient methods for streaming and capturing of output, as well as
combining Popen instances into pipelines.
Compared to std::process, the module follows the following
additional features:
-
The communicate family of methods for deadlock-free capturing of subprocess output/error, while simultaneously feeding data to its standard input. Capturing supports optional timeout and read size limit.
-
Connecting multiple commands into OS-level pipelines.
-
Flexible redirection options, such as connecting standard streams to arbitary open files, or merging output streams like shell’s
2>&1and1>&2operators. -
Non-blocking and timeout methods to wait on the process:
poll,wait, andwait_timeout.
§Examples
Communicate with a process and optionally terminate it:
let mut p = Popen::create(&["ps", "x"], PopenConfig {
stdout: Redirection::Pipe, ..Default::default()
})?;
// Obtain the output from the standard streams.
let (out, err) = p.communicate(None)?;
if let Some(exit_status) = p.poll() {
// the process has finished
} else {
// it is still running, terminate it
p.terminate()?;
}Use the Exec builder to execute a pipeline of commands and
capture the output:
let dir_checksum = {
Exec::shell("find . -type f") | Exec::cmd("sort") | Exec::cmd("sha1sum")
}.capture()?.stdout_str();Modules§
- unix
- Subprocess extensions for Unix platforms.
Structs§
- Capture
Data - Data captured by
Exec::captureandPipeline::capture. - Communicate
Error - Error during communication.
- Communicator
- Unattended data exchange with the subprocess.
- Exec
- A builder for
Popeninstances, providing control and convenience methods. - Null
File - Marker value for
stdin,stdout, andstderrmethods ofExecandPipeline. - Pipeline
- A builder for multiple
Popeninstances connected via pipes. - Popen
- Interface to a running subprocess.
- Popen
Config - Options for
Popen::create.
Enums§
- Exit
Status - Exit status of a process.
- Popen
Error - Error in
Popencalls. - Redirection
- Instruction what to do with a stream in the child process.
Functions§
- make_
pipe - Create a pipe.
Type Aliases§
- Result
- Result returned by calls in the
subprocesscrate in places where::std::io::Resultdoes not suffice.