РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
996 of 1245 menu

Метод stdout

Метод stdout класса Command настраивает, куда будет направлен стандартный поток вывода (standard output) запускаемого дочернего процесса. По умолчанию вывод наследуется от родительского процесса и попадает в консоль. Метод позволяет перехватить этот поток, чтобы затем прочитать его программно. Параметром метод принимает значение типа Stdio, например Stdio::piped для создания канала или Stdio::null для отбрасывания вывода.

Метод возвращает изменённую ссылку на Command, что позволяет выстраивать цепочку вызовов.

Синтаксис

command.stdout(cfg)

Пример

Давайте запустим команду echo и перехватим её стандартный вывод с помощью Stdio::piped:

use std::process::{Command, Stdio}; fn main() { let output = Command::new("echo") .stdout(Stdio::piped()) .output() .unwrap(); let text = String::from_utf8(output.stdout).unwrap(); println!("{}", text.trim()); }

Результат выполнения кода:

"hello"

Пример

Давайте отбросим стандартный вывод команды с помощью Stdio::null, чтобы он не попадал ни в консоль, ни в программу:

use std::process::{Command, Stdio}; fn main() { let status = Command::new("echo") .arg("abcde") .stdout(Stdio::null()) .status() .unwrap(); println!("{}", status.success()); }

Результат выполнения кода:

true

Пример

Давайте запустим дочерний процесс с перехваченным выводом через spawn и прочитаем его построчно:

use std::process::{Command, Stdio}; use std::io::{BufRead, BufReader}; fn main() { let mut child = Command::new("echo") .arg("12345") .stdout(Stdio::piped()) .spawn() .unwrap(); let stdout = child.stdout.take().unwrap(); let reader = BufReader::new(stdout); for line in reader.lines() { println!("{}", line.unwrap()); } child.wait().unwrap(); }

Результат выполнения кода:

"12345"

Смотрите также

  • метод stdin,
    который настраивает стандартный поток ввода дочернего процесса
  • метод stderr,
    который настраивает стандартный поток ошибок дочернего процесса
  • метод output,
    который запускает команду и возвращает её вывод
  • метод spawn,
    который запускает команду и возвращает дочерний процесс
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить