如何在 Rust 中执行系统命令并捕获其输出?
大家好!
我开始学习 Rust,正在编写一个小型自动化工具。我需要执行外部系统命令(例如 `ls -la` 或 `git status`)并在程序中读取其输出(stdout 和 stderr),以便后续处理字符串。
我查看了 `std::process::Command` 模块的文档,但未能正确捕获输出。以下是我尝试的代码:
```rust
use std::process::Command;
fn main() {
let output = Command::new("ls")
.arg("-la")
.output()
.expect("无法执行命令");
println!("stdout: {}", output.stdout);
println!("stderr: {}", output.stderr);
}
```
但控制台输出的是类似 `stdout: [115, 111, 109, 101, 32, 116, 101, 120, 116]` 的内容——这是字节而不是字符串!如何获得可读的文本?如果命令可能以错误结束该怎么办?我想了解如何正确处理退出状态以及如何单独捕获 stderr。
提前感谢您的帮助!