«前の日記(2007年2月3日(土)) 最新 次の日記(2007年4月28日(土))» 編集

徒然日記


2007年4月8日(日) [長年日記]

Rubyのstty -echo

ruby programでteminalからpasswordを入力させる場合、terminalにecho backしないようにする方法の作法ってあるのだろうか?

安直なのはsystem("stty -echo")だけど、systemって微妙…と思って検索したら、まつもとさんの投稿が。

termiosは使いかたはわかったけど、標準ライブラリじゃないのでダメ。

fcntlは使いかたもわからなけりゃ、どの定数になんの値を入れればいいかもわからん。

やはりsystem使うしかないのかしら?

curses

curses moduleを使えばできるみたい。

1 require 'curses'
2 
3 Curses::init_screen
4 Curses::stdscr.addstr("Enter Password: ")
5 Curses::noecho
6 password = Curses::getstr
7 Curses::echo
8 Curses::close_screen

でも、これだと新しい画面になって微妙だ。




«前の日記(2007年2月3日(土)) 最新 次の日記(2007年4月28日(土))»