pub struct Command(/* private fields */);Expand description
A process builder, providing fine-grained control over how a new process should be spawned.
A default configuration can be
generated using Command::new(program), where program gives a path to the
program to be executed. Additional builder methods allow the configuration
to be changed (for example, by adding arguments) prior to spawning:
use compio_process::Command;
let output = if cfg!(windows) {
Command::new("cmd")
.args(["/C", "echo hello"])
.output()
.await
.expect("failed to execute process")
} else {
Command::new("sh")
.args(["-c", "echo hello"])
.output()
.await
.expect("failed to execute process")
};
let hello = output.stdout;Command can be reused to spawn multiple processes. The builder methods
change the command without needing to immediately spawn the process.
use compio_process::Command;
let mut echo_hello = Command::new("sh");
echo_hello.arg("-c").arg("echo hello");
let hello_1 = echo_hello
.output()
.await
.expect("failed to execute process");
let hello_2 = echo_hello
.output()
.await
.expect("failed to execute process");Similarly, you can call builder methods after spawning a process and then spawn a new process with the modified settings.
use compio_process::Command;
let mut list_dir = Command::new("ls");
// Execute `ls` in the current directory of the program.
list_dir.status().await.expect("process failed to execute");
println!();
// Change `ls` to execute in the root directory.
list_dir.current_dir("/");
// And then execute `ls` again but in the root directory.
list_dir.status().await.expect("process failed to execute");See std::process::Command for detailed documents.
Implementations§
Source§impl Command
impl Command
Sourcepub fn arg(&mut self, arg: impl AsRef<OsStr>) -> &mut Self
pub fn arg(&mut self, arg: impl AsRef<OsStr>) -> &mut Self
Adds an argument to pass to the program.
Sourcepub fn args<I, S>(&mut self, args: I) -> &mut Self
pub fn args<I, S>(&mut self, args: I) -> &mut Self
Adds multiple arguments to pass to the program.
Sourcepub fn env<K, V>(&mut self, key: K, val: V) -> &mut Self
pub fn env<K, V>(&mut self, key: K, val: V) -> &mut Self
Inserts or updates an explicit environment variable mapping.
Sourcepub fn envs<I, K, V>(&mut self, vars: I) -> &mut Self
pub fn envs<I, K, V>(&mut self, vars: I) -> &mut Self
Inserts or updates multiple explicit environment variable mappings.
Sourcepub fn env_remove(&mut self, key: impl AsRef<OsStr>) -> &mut Self
pub fn env_remove(&mut self, key: impl AsRef<OsStr>) -> &mut Self
Removes an explicitly set environment variable and prevents inheriting it from a parent process.
Sourcepub fn env_clear(&mut self) -> &mut Self
pub fn env_clear(&mut self) -> &mut Self
Clears all explicitly set environment variables and prevents inheriting any parent process environment variables.
Sourcepub fn current_dir(&mut self, dir: impl AsRef<Path>) -> &mut Self
pub fn current_dir(&mut self, dir: impl AsRef<Path>) -> &mut Self
Sets the working directory for the child process.
Sourcepub fn stdin<S: TryInto<Stdio>>(
&mut self,
cfg: S,
) -> Result<&mut Self, S::Error>
pub fn stdin<S: TryInto<Stdio>>( &mut self, cfg: S, ) -> Result<&mut Self, S::Error>
Configuration for the child process’s standard input (stdin) handle.
Sourcepub fn stdout<S: TryInto<Stdio>>(
&mut self,
cfg: S,
) -> Result<&mut Self, S::Error>
pub fn stdout<S: TryInto<Stdio>>( &mut self, cfg: S, ) -> Result<&mut Self, S::Error>
Configuration for the child process’s standard output (stdout) handle.
Sourcepub fn stderr<S: TryInto<Stdio>>(
&mut self,
cfg: S,
) -> Result<&mut Self, S::Error>
pub fn stderr<S: TryInto<Stdio>>( &mut self, cfg: S, ) -> Result<&mut Self, S::Error>
Configuration for the child process’s standard error (stderr) handle.
Sourcepub fn get_program(&self) -> &OsStr
pub fn get_program(&self) -> &OsStr
Returns the path to the program.
Sourcepub fn get_args(&self) -> CommandArgs<'_>
pub fn get_args(&self) -> CommandArgs<'_>
Returns an iterator of the arguments that will be passed to the program.
Sourcepub fn get_envs(&self) -> CommandEnvs<'_>
pub fn get_envs(&self) -> CommandEnvs<'_>
Returns an iterator of the environment variables explicitly set for the child process.
Sourcepub fn get_current_dir(&self) -> Option<&Path>
pub fn get_current_dir(&self) -> Option<&Path>
Returns the working directory for the child process.
Sourcepub fn spawn(&mut self) -> Result<Child>
pub fn spawn(&mut self) -> Result<Child>
Executes the command as a child process, returning a handle to it.
Sourcepub async fn status(&mut self) -> Result<ExitStatus>
pub async fn status(&mut self) -> Result<ExitStatus>
Executes a command as a child process, waiting for it to finish and collecting its status. The output of child stdout and child stderr will be ignored.
Source§impl Command
impl Command
Sourcepub fn creation_flags(&mut self, flags: u32) -> &mut Self
Available on Windows only.
pub fn creation_flags(&mut self, flags: u32) -> &mut Self
Sets the process creation flags to be passed to CreateProcess.
These will always be ORed with CREATE_UNICODE_ENVIRONMENT.