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

Метод piped

Метод piped класса Stdio создаёт канал ввода-вывода для дочернего процесса. Он возвращает значение типа Stdio, которое можно передать в методы stdin, stdout или stderr класса Command. При использовании этого режима родительский процесс может читать вывод дочернего процесса или записывать данные в его стандартный ввод.

Параметров метод не принимает. Он возвращает готовую конфигурацию канала, которую можно напрямую использовать при настройке команды.

Синтаксис

Stdio::piped()

Пример

Давайте запустим команду echo и прочитаем её вывод через канал, созданный методом piped:

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

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

"abcde"

Пример

Давайте передадим данные в стандартный ввод дочернего процесса через канал, созданный методом piped:

use std::io::Write; use std::process::{Command, Stdio}; fn main() { let mut child = Command::new("cat") .stdin(Stdio::piped()) .stdout(Stdio::piped()) .spawn() .unwrap(); { let stdin = child.stdin.as_mut().unwrap(); stdin.write_all(b"12345").unwrap(); } let output = child.wait_with_output().unwrap(); let res = String::from_utf8_lossy(&output.stdout); println!("{}", res); }

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

"12345"

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

  • класс Stdio,
    который настраивает потоки ввода-вывода процесса
  • метод inherit,
    который наследует потоки от родительского процесса
  • метод null,
    который отключает поток ввода-вывода
  • метод spawn,
    который запускает дочерний процесс
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить