我想运行一个在stdin上阻塞的可执行文件,当按下一个键时,Enter不必按下即可立即打印相同的字符.
如何从stdin中读取一个字符而不必点击Enter?我从这个例子开始:
fn main() {
println!("Type something!");
let mut line = String::new();
let input = std::io::stdin().read_line(&mut line).expect("Failed to read line");
println!("{}", input);
}
Run Code Online (Sandbox Code Playgroud)
我通过API看起来并试图替换read_line()用bytes(),但一切我尝试需要我打Enter的读取发生之前.
这个问题被要求用于C/C++,但似乎没有标准的方法:从标准输入中捕获字符而不等待按下输入
考虑到它在C/C++中并不简单,它在Rust中可能不可行.
我正在尝试编写一些能够捕获SIGTERM信号的代码.
我找到了这个,我还发现了如何处理Rust中的阻塞i/o,或者一般来说长时间运行外部函数调用.
但是在目前的Rust版本(每晚0.12)中,它似乎std::io::signal::Listener被删除了.它被放在别的地方吗?如果是这样,有人会指出我如何捕捉信号?
rust ×2