STDIN.getpass 并不总是在终端中显示按键图标

STDIN.getpass does not always show the key icon in the terminal

提问人:nakakapagpabagabag 提问时间:11/6/2021 更新时间:11/7/2021 访问量:72

问:

如何确保每次调用时都显示按键图标(参见 img 以获取示例)?问题是间歇性的,有时我得到图标,有时我没有。我找不到可靠的复制步骤。STDIN.getpass

enter image description here

我的代码目前是什么样子的:

  $stdout.flush
  # to hide the password while being typed in the terminal
  STDIN.getpass
  • 我以为会解决我的问题,但事实并非如此。$stdout.flush
  • STDIN.getpass被返回,因此它不会分配给任何变量。
Ruby 终端 IO 密码 凭据

评论

0赞 Hector Correa 11/6/2021
我只在传递提示时看到按键图标:STDIN.getpass "Enter password:"

答:

1赞 Sam Winstanley 11/7/2021 #1

他们的键图标本身与非常简单的功能没有太大关系,你可以在这里看到它:STDIN.getpass

https://github.com/ruby/io-console/blob/master/lib/io/console/ffi/common.rb#L9-L21

该块只是将 设置为 (参见 https://github.com/ruby/ruby/blob/d92f09a5eea009fa28cd046e9d0eb698e3d94c5c/ext/io/console/console.c#L602noechotty_modenoecho)

所以,我认为这个问题实际上更好,因为:“当tty_mode设置为 .Terminal programmy operating systemnoecho