linux – 我可以用非规范的方式从stdin读取吗?

有没有办法可以在 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);
}

此代码等待用户按返回以打印缓冲区的内容.所需的行为是在用户输入时打印.在Stdin的文档(上面的代码中由stdin()调用返回的结构)中,没有引用如何更改此默认行为.

解决方法

不,不是没有外部板条箱或不安全的FFI代码.您可能希望使用 termios功能.具体来说,请参阅ICANON和tcsetattr.箱子 nix具有这些功能的绑定.有关如何在Rust中使用它们的示例,请参见 here.

相关文章

文章浏览阅读1.8k次,点赞63次,收藏54次。Linux下的目录权限...
文章浏览阅读1.6k次,点赞44次,收藏38次。关于Qt的安装、Wi...
本文介绍了使用shell脚本编写一个 Hello
文章浏览阅读1.5k次,点赞37次,收藏43次。【Linux】初识Lin...
文章浏览阅读3k次,点赞34次,收藏156次。Linux超详细笔记,...
文章浏览阅读6.8k次,点赞109次,收藏114次。【Linux】 Open...