我能以非规范的方式从标准输入读取吗?

时间:2015-11-15 02:01:02

标签: linux rust

有没有办法可以在Linux下的non-canonical mode中读取 stdin ?非规范输入意味着在用户输入时, stdin 上的read()的调用将立即返回,这不是默认行为,正如可以通过尝试看到的那样:

// Create a buffer
let mut buffer :[u8; 1] = [0];
// Loops over the input from stdin, one character a time
while io::stdin().read(&mut buffer).unwrap() > 0 {
    println!("{:?}", buffer);
}

此代码等待用户按 return 打印buffer的内容。所需的行为是在用户输入时打印。在Stdin的文档(上面代码中stdin()调用返回的结构)中,没有提及如何更改此默认行为。

1 个答案:

答案 0 :(得分:1)

不,没有外部板条箱或不安全的FFI代码。您可能希望使用termios函数。具体来说,请参阅ICANONtcsetattr。包nix包含这些功能的绑定。有关如何在Rust中使用它们的示例,请参阅here