Метод kill
Метод kill класса Child принудительно завершает
выполнение дочернего процесса. Он отправляет процессу сигнал
завершения и возвращает результат типа io::Result<()>.
Метод не принимает параметров. Если процесс уже завершился,
метод всё равно вернёт Ok(()).
Синтаксис
child.kill()
Пример
Давайте запустим процесс sleep и завершим его
через некоторое время:
use std::process::Command;
use std::thread;
use std::time::Duration;
fn main()
{
let mut child = Command::new("sleep")
.arg("10")
.spawn()
.expect("failed to spawn process");
thread::sleep(Duration::from_secs(1));
match child.kill() {
Ok(_) => println!("process killed"),
Err(e) => println!("error: {}", e),
}
}
Результат выполнения кода:
"process killed"
Пример
Давайте попробуем завершить процесс, который уже завершился:
use std::process::Command;
fn main()
{
let mut child = Command::new("echo")
.arg("hello")
.spawn()
.expect("failed to spawn process");
let _ = child.wait();
match child.kill() {
Ok(_) => println!("kill returned Ok"),
Err(e) => println!("error: {}", e),
}
}
Результат выполнения кода:
"kill returned Ok"
Смотрите также
-
класс
Child,
который представляет дочерний процесс -
метод
wait,
который ожидает завершения процесса -
метод
wait_with_output,
который ожидает завершения и возвращает вывод -
метод
id,
который возвращает идентификатор процесса