RP4412开发板可选的系统已经有3种了,包括:android、ubuntu及QT。在这种情况下,有很多的朋友会在自学的路上有很多问题,例如:linux下怎么在不按回车情况下就能读取字符&&读取到字符不回显。
想要实现按up/down键显示历史命令,需要:1. 在不按回车键的情况下能够实时对up/down键按下做响应。2. 不回显出up/down键按下的显示。
怎么做呢?
两种方法:
1. 调用system("stty -icanon");关闭缓冲区 system("stty -echo");关闭回显。
不过,注意调用完退出程序之前要还原回来:system("stty icanon");打开缓冲区 system("stty echo");打开回显。
不然的话,你的终端仍然会有关闭缓冲区和回显的效果,你会发现你输入的命令没有办法显示出来。
2. 运用tcgetattr和tcsetattr来改变终端属性;(头文件为:#include )
定义struct termios termios_opt;
然后tcgetattr(outfd, &termios_opt);获取原先终端的属性存到 termios_opt里面;
再termios_opt.c_lflag &= ~ICANON;
termios_opt.c_lflag &= ~ECHO;
来设置你想要改变的参数;
最后,tcsetattr(outfd,TCSANOW,&termios_opt);把改变后的参数重新set到终端里面;
调用完退出程序之前还是要还原回来:
termios_opt.c_lflag |= ICANON;
termios_opt.c_lflag |= ECHO;
tcsetattr(outfd,TCSANOW,&termios_opt);
就可以了。
这里就是整理了两种在RP4412开发板linux特殊情况下读取字符&&读取到字符不回显的具体方法,希望有这方面疑惑的朋友能得到启发。