
linux下C编程,readline库有监听键盘和修改当前输入的函数吗? 20
在linux下用c编程,在做一个CLI,想在输入的时候,每输入一个字符就触发某个指定的函数,然后在这个函数里把输入的内容全部替换掉。。。readline的库有这种接口吗。...
在linux下用c编程,在做一个CLI,想在输入的时候,每输入一个字符就触发某个指定的函数,然后在这个函数里把输入的内容全部替换掉。。。readline的库有这种接口吗。。没找到
展开
展开全部
linux的stdio不支持监听键盘的按键,你需要包含扩展的头文件和库。
比如包含termios.h,这个头文件里有一些终端IO的相关扩展。我们使用tcsetattr来设置一个属性,就可以不用回车就即时监听到按键。
#include <termios.h>
//....其它代码
int in;
struct termios new_settings;
struct termios stored_settings;
tcgetattr(0,&stored_settings); /* 把当前设置保存起来,以供恢复 */
new_settings = stored_settings;
new_settings.c_lflag &= (~ICANON); /* 新设置,将canonical模式取消,屏蔽整行缓存 */
new_settings.c_cc[VTIME] = 0; /* 超时设置为0 */
new_settings.c_cc[VMIN] = 1; /* 读取的最小字符数 */
tcsetattr(0,TCSANOW,&new_settings);
in = getchar(); /* 此时就可以正常的使用getchar()函数来获取一个输入了 */
/* 此时,你可以使用while,并将获得的输入进行处理 */
tcsetattr(0,TCSANOW,&stored_settings); /* 恢复原设置 */
另外,你可以考虑使用linux/input.h,使用事件监控的方式,来监控键盘事件。这个功能就强大多了,但是,这个操作只适用于本机,也就是说,这个事件,只能监听到与主机直接相连的键盘和鼠标的事件。如果使用ssh登录过去的,是监听不到。关于具体用法,自己搜一下就好。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询