Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
998 of 1246 menu
◀ ▶

Метод stderr

Метод stderr используется для настройки стандартного потока ошибок (stderr) дочернего процесса. Он позволяет указать, как должен обрабатываться вывод ошибок запускаемой программы. Параметром метод принимает значение типа Stdio, которое определяет способ обработки потока.

Синтаксис

Command::new(program).stderr(stdio)

Пример

Давайте запустим команду ls и перенаправим её поток ошибок в тот же канал, что и стандартный вывод:

use std::process::{Command, Stdio}; fn main() { let output = Command::new("ls") .stderr(Stdio::piped()) .output() .expect("failed to execute process"); println!("status: {}", output.status); println!("stderr: {}", String::from_utf8_lossy(&output.stderr)); }

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

status: exit status: 0 stderr: ""

Пример

Давайте запустим команду, которая гарантированно выдаст ошибку, и перехватим её поток ошибок:

use std::process::{Command, Stdio}; fn main() { let output = Command::new("ls") .arg("/nonexistent_path_xyz") .stderr(Stdio::piped()) .output() .expect("failed to execute process"); println!("status: {}", output.status); println!("stderr: {}", String::from_utf8_lossy(&output.stderr)); }

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

status: exit status: 2 stderr: "ls: cannot access '/nonexistent_path_xyz': No such file or directory\n"

Пример

Давайте подавим поток ошибок, перенаправив его в Stdio::null:

use std::process::{Command, Stdio}; fn main() { let output = Command::new("ls") .arg("/nonexistent_path_xyz") .stderr(Stdio::null()) .output() .expect("failed to execute process"); println!("status: {}", output.status); println!("stderr: {:?}", String::from_utf8_lossy(&output.stderr)); }

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

status: exit status: 2 stderr: ""

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

  • метод stdout,
    который настраивает стандартный поток вывода
  • метод stdin,
    который настраивает стандартный поток ввода
  • метод output,
    который запускает процесс и возвращает его вывод
  • метод piped,
    который создает новый канал для потока ввода-вывода
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить