Класс Child
Класс Child представляет собой дескриптор
дочернего процесса, который был запущен с помощью
Command. Он предоставляет методы для
взаимодействия с запущенным процессом: ожидание
завершения, получение кода выхода, принудительное
завершение, а также доступ к идентификатору
процесса. Объект Child создается при вызове
метода spawn у команды.
Синтаксис
let child: Child = command.spawn()?;
Пример
Давайте запустим дочерний процесс и дождемся его
завершения с помощью метода wait:
use std::process::Command;
fn main()
{
let mut child = Command::new("echo")
.arg("hello")
.spawn()
.expect("failed to spawn");
let status = child.wait()
.expect("failed to wait");
println!("{}", status.success());
}
Результат выполнения кода:
true
Пример
Давайте запустим дочерний процесс и получим его
вывод с помощью метода wait_with_output:
use std::process::Command;
fn main()
{
let child = Command::new("echo")
.arg("abcde")
.stdout(std::process::Stdio::piped())
.spawn()
.expect("failed to spawn");
let output = child.wait_with_output()
.expect("failed to wait");
let text = String::from_utf8(output.stdout)
.expect("invalid utf-8");
println!("{}", text.trim());
}
Результат выполнения кода:
"abcde"
Пример
Давайте запустим долгий процесс и принудительно
завершим его с помощью метода kill:
use std::process::Command;
fn main()
{
let mut child = Command::new("sleep")
.arg("10")
.spawn()
.expect("failed to spawn");
child.kill().expect("failed to kill");
let status = child.wait()
.expect("failed to wait");
println!("{}", status.success());
}
Результат выполнения кода:
false
Смотрите также
-
метод
wait,
который ожидает завершения дочернего процесса -
метод
wait_with_output,
который ожидает завершения и возвращает вывод процесса -
метод
kill,
который принудительно завершает дочерний процесс -
метод
id,
который возвращает идентификатор дочернего процесса