如何让 Rust 命令实际输出到 stdout?

问题描述 投票:0回答:1

我正在尝试使用 Command::process 来生成一些进程,并开始使用,我想检查是否可以使用像

echo
这样的简单命令来正常工作。我想获取一些用户输入,然后生成一个进程将其回显到标准输出,以便我可以验证是否得到如下响应:

> echo this!
echo this!    <-- my echoed text

目前,我正在尝试这样做:

use std::io;
use std::process::Command;

fn main() {
    let mut some_input = String::new();
    io::stdin()
        .read_line(&mut some_input)
        .unwrap();

    let command_example = Command::new("echo")
        .arg(&some_input)
        .output()
        .unwrap();

    let expected_output = format!("{}\n", &some_input);

    assert_eq!(expected_output.as_bytes(), command_example.stdout.as_slice());
}

assert
块正在通过,所以我可以看到命令的输出最终出现在结构体的粗壮缓冲区中。但是,当我在终端中运行它时,没有输出,程序只是结束,没有将任何内容打印回标准输出。我做错了什么,这段代码不会导致某些内容被打印到标准输出?

rust process stdout
1个回答
0
投票

来自文档

作为子进程执行命令,等待其完成并收集其所有输出。

因此,您可以在

command_example
变量中获得该过程的所有输出。 终端中没有显示任何内容,因为这是已收集的。

© www.soinside.com 2019 - 2024. All rights reserved.