pub trait CommandGroup {
    // Required method
    fn group(&mut self) -> CommandGroupBuilder<'_, Command>;

    // Provided methods
    fn group_spawn(&mut self) -> Result<GroupChild> { ... }
    fn group_output(&mut self) -> Result<Output> { ... }
    fn group_status(&mut self) -> Result<ExitStatus> { ... }
}
Expand description

Extensions for Command adding support for process groups.

Required Methods§

source

fn group(&mut self) -> CommandGroupBuilder<'_, Command>

Converts the implementor into a CommandGroupBuilder, which can be used to set flags that are not available on the Command type.

Provided Methods§

source

fn group_spawn(&mut self) -> Result<GroupChild>

Executes the command as a child process group, returning a handle to it.

By default, stdin, stdout and stderr are inherited from the parent.

On Windows, this creates a job object instead of a POSIX process group.

Examples

Basic usage:

use std::process::Command;
use command_group::CommandGroup;

Command::new("ls")
        .group_spawn()
        .expect("ls command failed to start");
source

fn group_output(&mut self) -> Result<Output>

Executes the command as a child process group, waiting for it to finish and collecting all of its output.

By default, stdout and stderr are captured (and used to provide the resulting output). Stdin is not inherited from the parent and any attempt by the child process to read from the stdin stream will result in the stream immediately closing.

On Windows, this creates a job object instead of a POSIX process group.

Examples
use std::process::Command;
use std::io::{self, Write};
use command_group::CommandGroup;

let output = Command::new("/bin/cat")
                     .arg("file.txt")
                     .group_output()
                     .expect("failed to execute process");

println!("status: {}", output.status);
io::stdout().write_all(&output.stdout).unwrap();
io::stderr().write_all(&output.stderr).unwrap();

assert!(output.status.success());
source

fn group_status(&mut self) -> Result<ExitStatus>

Executes a command as a child process group, waiting for it to finish and collecting its status.

By default, stdin, stdout and stderr are inherited from the parent.

On Windows, this creates a job object instead of a POSIX process group.

Examples
use std::process::Command;
use command_group::CommandGroup;

let status = Command::new("/bin/cat")
                     .arg("file.txt")
                     .group_status()
                     .expect("failed to execute process");

println!("process finished with: {}", status);

assert!(status.success());

Implementations on Foreign Types§

source§

impl CommandGroup for Command

Implementors§