Skip to main content

ChildExt

Trait ChildExt 

Source
pub trait ChildExt: Sealed {
    // Required methods
    fn send_signal(&self, signal: i32) -> Result<()>;
    fn send_process_group_signal(&self, signal: i32) -> Result<()>;
    fn kill_process_group(&mut self) -> Result<()>;
}
🔬This is a nightly-only experimental API. (unix_send_signal #141975)
Available on Unix only.

Required Methods§

Source

fn send_signal(&self, signal: i32) -> Result<()>

🔬This is a nightly-only experimental API. (unix_send_signal #141975)

Sends a signal to a child process.

§Errors

This function will return an error if the signal is invalid. The integer values associated with signals are implementation-specific, so it’s encouraged to use a crate that provides posix bindings.

§Examples
#![feature(unix_send_signal)]

use std::{io, os::unix::process::ChildExt, process::{Command, Stdio}};

use libc::SIGTERM;

fn main() -> io::Result<()> {
    let child = Command::new("cat").stdin(Stdio::piped()).spawn()?;
    child.send_signal(SIGTERM)?;
    Ok(())
}
Source

fn send_process_group_signal(&self, signal: i32) -> Result<()>

🔬This is a nightly-only experimental API. (unix_send_signal #141975)

Sends a signal to a child process’s process group.

§Errors

This function will return an error if the signal is invalid or if the child process does not have a process group. The integer values associated with signals are implementation-specific, so it’s encouraged to use a crate that provides posix bindings.

§Examples
#![feature(unix_send_signal)]

use std::{io, os::unix::process::{ChildExt, CommandExt}, process::{Command, Stdio}};

use libc::SIGTERM;

fn main() -> io::Result<()> {
    let child = Command::new("cat")
        .stdin(Stdio::piped())
        .process_group(0)
        .spawn()?;
    child.send_process_group_signal(SIGTERM)?;
    Ok(())
}
Source

fn kill_process_group(&mut self) -> Result<()>

🔬This is a nightly-only experimental API. (unix_kill_process_group #156537)

Forces the child process’s process group to exit.

This is analogous to Child::kill but applies to every process in the child process’s process group.

Use CommandExt::process_group to assign a child process to an existing process group, or to make it the leader of a new process group. By default spawned processes are in the parent’s process group.

§Examples
#![feature(unix_kill_process_group)]

use std::{os::unix::process::{ChildExt, CommandExt}, process::{Command, Stdio}};

fn main() -> std::io::Result<()> {
    let mut child = Command::new("cat")
        .stdin(Stdio::piped())
        .process_group(0)
        .spawn()?;
    child.kill_process_group()?;
    Ok(())
}

Implementors§