繁体   English   中英

Rust 非交互式标准输入读取

[英]Rust Non-interactive stdin read

我正在为 rust 编写一个 cli 程序,我想要实现的感觉应该很简单,但结果却是一个巨大的麻烦。 基本上我希望能够将 pipe 数据输入程序,但是每当我使用io::stdin时,如果没有任何东西在管道中,我会得到一个交互式环境,我必须按 Enter。 反正有没有将整个标准输入读入一个字符串,如果没有什么就继续前进吗?

抱歉,没有代码片段,但我对此一无所知。

编辑 1) 尝试使用atty实现,但似乎无法使代码正常工作。

    let stdin = io::stdin();
    for line in stdin.lock().lines() {
        if atty::isnt(atty::Stream::Stdin) {
            println!("{}", line.unwrap());
        } else {
            break;
        }
    }

由于“一切都是文件”的理念,很难区分从控制台/用户读取和从文件读取(除了使用atty:is 之外)。

如果您不想要任何输入,您还可以将程序的标准输入重定向到/dev/null

  ./the_program < /dev/null

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM