端末のような interface を作る上で readline を使わない手はない。readline の存在を知ってはいたものの、使用するのはこれが初めてである。 コンパイル時に -lreadline -lcurses の指定が必要である。
以下、ソースの抜粋。
以下、ソースの抜粋。
#include <readline/readline.h> #include <readline/history.h> char *readline(const char *prompt);
void add_history(const char *line); void clear_history(void);
int num_hist = 0; char *line = NULL, buf[MAX_BUF_SIZE]; while ( (line = readline("spsh> ")) ) {
add_history(line); if (++num_hist > MAX_HIST_SIZE) {
free( remove_history(0) ); --num_hist; }
strcpy(buf, line); free(line); /* use buf */
}