这个问题确实挺揪心,退格键(“backspace”)居然是^H^H,不符合我们使用习惯,我们平常使用退格键都习惯删除上一个字符。
可以通过stty来实现或者在程序中tcgetattr+tcsetattr结合实现。
stty:
stu@ubuntu:~/test1$ stty erase ^H
在bash下:$ stty erase ^?
或者把 stty erase ^? 添加到.bash_profile中。
在csh下:$ stty erase ^H
或者把 stty erase ^H 添加到.cshrc中
tcgetattr+tcsetattr:
问题描述:
int main(void )
{
//setstty();
char buf[100];
read(STDIN_FILENO,buf,sizeof(buf));
write(STDOUT_FILENO,buf,strlen(buf));
//renew();
return 0;
}
//结果,输入hello(连按几个退格键"backspace",
//出现的效果不是我们想要的,我们希望按下退格键就是删除前一个字符)
/*
stu@ubuntu:~/test1$ ./test
hello^H^H^H^H
hello
stu@ubuntu:~/test1$
*/
大概介绍:
int tcget