Ruby 立即从控制台获取单个字符

Ruby 立即从控制台获取单个字符,ruby,Ruby,一旦提供了每个字符(无需等待返回键),是否可以从STDIN获取这些字符?使用gem: 从。这可以通过Ruby 1.9.3的新getch方法实现: require 'io/console' input = STDIN.getch 文件(核心): 文件(库): 资料来源:是的,有很多方法可以做到这一点,除了gems,您还可以通过gems for termios、ncurses或stty程序直接使用terminfo进行操作 tty_param = `stty -g` system 'stty raw

一旦提供了每个字符(无需等待返回键),是否可以从STDIN获取这些字符?

使用gem:


从。

这可以通过Ruby 1.9.3的新
getch
方法实现:

require 'io/console'
input = STDIN.getch
文件(核心):

文件(库):


资料来源:

是的,有很多方法可以做到这一点,除了gems,您还可以通过gems for termios、ncurses或stty程序直接使用terminfo进行操作

tty_param = `stty -g`
system 'stty raw'

a = IO.read '/dev/stdin', 1

system "stty #{tty_param}"

print a

stdin不一定(甚至通常)是tty。指向文档的指针会很有帮助。谢谢,在这里回答你:如果input=“\u0018”或input=“\u0003”,不要忘了添加
exit,如果你处于循环中,那么这应该被弃用,取而代之的是@J-\ul的答案。
tty_param = `stty -g`
system 'stty raw'

a = IO.read '/dev/stdin', 1

system "stty #{tty_param}"

print a