• ベストアンサー

getpass() の代わりに使える関数は?

パスワード入力をする getpass() というライブラリ関数(glibcに含まれる関数)がありますが、man getpass でマニュアルページを出すと「この関数は obsolete である。用いないこと。」と書いてあります。 では、一体何を使えば良いのでしょうか? 探しても同じような関数が見当たらないんですが、自作するしかないんですか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

自分が知る範囲では自作しか無いかと。 例えばこんな感じですかね。 http://stackoverflow.com/questions/1196418/getting-a-password-in-c-without-using-getpass-3 ちなみに、様々なlibcでのgetpassの実装にも自分で実装するヒントはありそうです。 glibcでの実装 http://repo.or.cz/w/glibc.git/blob/HEAD:/misc/getpass.c FreeBSDでの実装 http://svnweb.freebsd.org/base/head/lib/libc/gen/readpassphrase.c?view=markup NetBSDでの実装 http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/lib/libc/gen/getpass.c glibcの実装が何をしているのか一番読みやすいと思います。

noboru2000
質問者

お礼

ありがとうございます。 やはり自作するしかないようですね。 エコーしないだけというと、試しにコマンドラインでこんなの打ったらできました。 stty -echo echonl ; echo -n 'Passwd:' ; read pw ; stty echo -echonl ; echo $pw trap でシグナルハンドラも作ればシェルスクリプトでもできますね。

関連するQ&A

専門家に質問してみよう