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

本文介绍了在RP4412开发板上运行Linux时,如何实现在不按回车键的情况下读取键盘输入并禁止回显的方法。提供了两种途径:一是通过调用system命令临时关闭缓冲区和回显功能;二是利用termios.h中的tcgetattr和tcsetattr函数调整终端属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值