Тип Output
Тип Output возвращается методом output
у Command и представляет собой структуру,
которая хранит результат выполнения внешней команды.
Он содержит три поля: status (код выхода команды
в виде ExitStatus), stdout (вектор байтов
стандартного вывода) и stderr (вектор байтов
стандартного потока ошибок). Тип Output
позволяет получить полную информацию о выполненной
команде, включая её вывод и статус завершения.
Синтаксис
std::process::Output
Пример
Давайте выполним команду echo и получим результат
в виде типа Output:
use std::process::Command;
fn main()
{
let output = Command::new("echo")
.arg("hello")
.output()
.expect("failed to execute command");
println!("status: {}", output.status);
println!("stdout: {}", String::from_utf8_lossy(&output.stdout));
}
Результат выполнения кода:
status: exit status: 0
stdout: hello
Пример
Давайте проверим успешность выполнения команды
с помощью поля status:
use std::process::Command;
fn main()
{
let output = Command::new("echo")
.arg("abcde")
.output()
.expect("failed to execute command");
if output.status.success() {
println!("command succeeded");
} else {
println!("command failed");
}
}
Результат выполнения кода:
command succeeded
Пример
Давайте получим стандартный поток ошибок команды
через поле stderr:
use std::process::Command;
fn main()
{
let output = Command::new("ls")
.arg("/nonexistent_path_xyz")
.output()
.expect("failed to execute command");
let stderr = String::from_utf8_lossy(&output.stderr);
println!("stderr: {}", stderr.trim());
println!("success: {}", output.status.success());
}
Результат выполнения кода:
stderr: ls: cannot access '/nonexistent_path_xyz': No such file or directory
success: false
Смотрите также
-
метод
output,
который выполняет команду и возвращает тип Output -
тип
ExitStatus,
который представляет статус завершения команды -
метод
success,
который проверяет успешность завершения команды -
метод
status,
который выполняет команду и возвращает только ExitStatus