如何使用std::process::Command讲输出重定向到文件中并读取
时间: 2024-01-08 15:04:09 浏览: 222
C++ 11 std::function和std::bind使用详解
要使用 `std::process::Command` 将输出重定向到文件中并读取,可以使用 `stdout` 方法来设置输出重定向到文件,然后使用 `output` 方法执行命令并获取输出。
下面是一个示例,演示如何将命令的输出重定向到文件中并读取:
```rust
use std::process::{Command, Stdio};
use std::fs::File;
use std::io::prelude::*;
fn main() {
// 创建一个文件用于保存命令的输出
let mut file = File::create("output.txt").expect("failed to create file");
// 创建 Command 并设置输出重定向到文件
let output = Command::new("ls")
.arg("-l")
.stdout(Stdio::from(file))
.output()
.expect("failed to execute process");
// 检查命令的执行状态
if output.status.success() {
println!("Command executed successfully!");
} else {
println!("Command failed!");
}
// 读取保存在文件中的输出
let mut contents = String::new();
File::open("output.txt")
.expect("failed to open file")
.read_to_string(&mut contents)
.expect("failed to read file");
println!("Output: {}", contents);
}
```
在上面的示例中,我们首先创建了一个名为 "output.txt" 的文件来保存命令的输出。然后,通过 `stdout` 方法将 `Command` 结构体的输出重定向到该文件。接着使用 `output()` 方法执行命令,并通过 `output.status` 来检查命令的执行状态。
最后,我们使用 `File::open()` 方法打开保存输出的文件,并使用 `read_to_string()` 方法将文件内容读取到一个字符串中,然后将该字符串打印出来。
希望这可以帮助到你!如果你有更多关于 `std::process::Command` 的问题,请继续提问。
阅读全文