Тип Stdio
Тип Stdio используется для настройки стандартных потоков
(ввода, вывода и ошибок) при запуске дочернего процесса
через Command. Он определяет, будет ли поток
перенаправлен в канал (pipe), унаследован от родителя
или перенаправлен в пустоту. Тип не имеет собственных
параметров - его значения создаются с помощью
ассоциированных методов piped, inherit и null.
Синтаксис
use std::process::Stdio;
Stdio::piped()
Stdio::inherit()
Stdio::null()
Пример
Давайте запустим команду echo и перенаправим
её стандартный вывод в канал, чтобы прочитать результат
в родительском процессе:
use std::process::{Command, Stdio};
fn main()
{
let output = Command::new("echo")
.arg("abcde")
.stdout(Stdio::piped())
.output()
.expect("failed to execute process");
let text = String::from_utf8_lossy(&output.stdout);
println!("{}", text.trim());
}
Результат выполнения кода:
"abcde"
Пример
Давайте запустим команду и перенаправим её стандартный вывод в пустоту, чтобы он не отображался в консоли:
use std::process::{Command, Stdio};
fn main()
{
let status = Command::new("echo")
.arg("12345")
.stdout(Stdio::null())
.status()
.expect("failed to execute process");
println!("success: {}", status.success());
}
Результат выполнения кода:
"success: true"
Пример
Давайте унаследуем стандартный вывод от родительского процесса, чтобы команда выводила данные напрямую в консоль:
use std::process::{Command, Stdio};
fn main()
{
let status = Command::new("echo")
.arg("abcde")
.stdout(Stdio::inherit())
.status()
.expect("failed to execute process");
println!("success: {}", status.success());
}
Результат выполнения кода:
"abcde"
"success: true"