GNU readlineを使ってみる

作成中のftpクライアントでユーザからコマンド入力を行う部分を作っています.scanfやgetsを使用すればいい話なのですが,どうせ作るならbashライクな入力インタフェースを作りたいと考えました.Ctrl+rで履歴の検索を行ったりするアレです.しかし,もう既に誰かが作っているだろうと思って調べてみたところ,GNU readlineというものを発見しました.このライブラリは自分が望む機能を提供しています.

さっそくmanでreadlineについて調べてみたところ,以下のヘッダーをインクルードし,readline関数を使えばいいということがわかりました.

#include
#include
#include

#include

char * readline (const char *prompt);

しかし,私の環境(CentOS5)には上記のヘッダが無かったので,yumで次のパッケージをインストールしました.

# yum install readline-devel

/usr/include/以下にreadline/*.hがインストールされます.

man readlineを元に簡単なサンプルプログラムを作ってみたところ,コンパイルがうまくいきませんでした.調べてみると,gccのオプションに-lreadlineと-lncursesが必要で,このオプションを追加してコンパイルが通りました.

GNU readlineについてとても分かりやすくまとめているサイト様を見つけたので,紹介しておきます.