linux下不按回车如何读取字符&&读取到字符不回显

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特殊情况下读取字符&&读取到字符不回显的具体方法,希望有这方面疑惑的朋友能得到启发。

你可能感兴趣的:(linux下不按回车如何读取字符&&读取到字符不回显)