����Linux�Ż�
Linux����

��realine���������my_shell

����ʱ��:2017-05-12 09:34:02��Դ:linux��վ����:����ͨ
Linux�µı�׼IO����ܲ�����,���������������ҷ�������ƶ����,�źܶ�ʱ������ܴ������,�����������Լ���shell��ʱ��ͱ�����ѵ���,������ô����������������,�������˺ܾ�,�ҵ�������ö���,readline��,������ʵ�����ҷ�����ƶ����,���·�����鿴��ʷ����,tab����ȫ�Ĺ���,�����Ҿ����̴�����ʹ�������.
 
����,��װ��:
sudo apt-get install libreadline6-dev
sudo apt-get install lib64readline6
 
�ҵ�ubuntu�����������װ��,centosϵ���ǰ�apt-get����yum,����İ�����ȷ��,���϶�ʱreadline��ͷ,����tab��,���IJ���.
װ��֮����Ҫȷ����/usr/include/readline���Ŀ¼.
 
Ȼ����ldconfig -p | grep readline������ȷ��������.so�ļ�λ��,��/lib64�µ�.
����╼[~] 
��╼  ldconfig -p | grep readline 
libreadline.so.6 (libc6,x86-64) => /lib/x86_64-linux-gnu/libreadline.so.6
libreadline.so.6 (libc6,x86-64) => /lib64/libreadline.so.6
libreadline.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libreadline.so
libguilereadline-v-18.so.18 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libguilereadline-v-18.so.18
libguilereadline-v-18.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libguilereadline-v-18.so
 
#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>
char *readline (const char *prompt);
 
������������,��Ҫinclude����.h�ļ�,prompt��������Ҫ�������ʾ��Ϣ,�����ص�ʱchar* �͵�.
 
Ȼ�����Ҹ��򵥵�ʾ����.
#include<stdio.h>
#include<readline/readline.h>
#include<readline/history.h>
int main()
{
char *line;
while(1) {
line = readline(">>");
puts(line);
if(*line) {
add_history(line);
}
free(line);
}
return 0;
}
 
add_history()����������������ʷ��¼��!
Ȼ��,�������ı���ͦ����,��ô��ֱ��дmakefile��
 
cc = gcc
OBJ = ksh
all:
$(cc) -c ./1.3.c
$(cc) -o $(OBJ) ./1.3.o /lib64/libreadline.so.6 -I -lreadlin -lncurses -g
rm *.o
clean:
rm *.o
 
����,���shell�Ѿ��൱˧����!
 
�������ø��µ�ַ��//m.ajphoenix.com/linux/30716.html