pub struct ProcessBuilder { /* private fields */ }
Expand description

A builder object for an external process, similar to std::process::Command.

Implementations

(chainable) Set the executable for the process.

(chainable) Add an arg to the args list.

(chainable) Add many args to the args list.

(chainable) Replace args with new args list

(chainable) Set the current working directory of the process

(chainable) Set an environment variable for the process.

(chainable) Unset an environment variable for the process.

Get the executable name.

Get the program arguments

Get the current working directory for the process

Get an environment variable as the process will see it (will inherit from environment unless explicitally unset).

Get all environment variables explicitly set or unset for the process (not inherited vars).

Set the make jobserver. See the jobserver crate for more information.

Run the process, waiting for completion, and mapping non-success exit codes to an error.

Replaces the current process with the target process.

On Unix, this executes the process using the unix syscall execvp, which will block this process, and will only return if there is an error.

On Windows this isn’t technically possible. Instead we emulate it to the best of our ability. One aspect we fix here is that we specify a handler for the ctrl-c handler. In doing so (and by effectively ignoring it) we should emulate proxying ctrl-c handling to the application at hand, which will either terminate or handle it itself. According to microsoft’s documentation at: https://docs.microsoft.com/en-us/windows/console/ctrl-c-and-ctrl-break-signals the ctrl-c signal is sent to all processes attached to a terminal, which should include our child process. If the child terminates then we’ll reap them in Cargo pretty quickly, and if the child handles the signal then we won’t terminate (and we shouldn’t!) until the process itself later exits.

Execute the process, returning the stdio output, or an error if non-zero exit status.

Execute a command, passing each line of stdout and stderr to the supplied callbacks, which can mutate the string data.

If any invocations of these function return an error, it will be propagated.

Optionally, output can be passed to errors using print_output

Converts ProcessBuilder into a std::process::Command, and handles the jobserver if present.

Trait Implementations

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
Converts the given value to a String. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.