首页 > 输入脚本如何刷新输入缓冲区

输入脚本如何刷新输入缓冲区

场景:

Shell脚本先打印某Log,会打印几十秒

然后用 read ACTION 读一个输入进来

根据输入的值进行下一步操作

如果在第一步,打印Log的过程中有键盘输入,这些输入都会被保存在input buffer里,到第二步读取的时候会一起被读进来。如果键盘输入里有回车,那么read就会直接把回车以前的字符存入ACTION。

键盘输入可以能是各种情况,有多个字符,多个回车。

有没有什么办法,可以再read之前把input buffer清空?


一个变通的方法在真正的 read 前面加一句 read -t 1(1s的timeout),让真正的read给出一个prompt string用于区分,这样在prompt string出现之前的输入(至多一个回车)都会被忽略。

如果觉得1s的timeout太长,可以自己写一个简单的c程序,这个程序的作用就是先给自己设置一个alarm(setitimer或者alarm系统调用),然后 while (getchar());

【热门文章】
【热门文章】