Avatar ·

如何在 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。 提前感谢您的帮助!