来自终端的 EVIOCGRAB 换行符

EVIOCGRAB newline from terminal

我正在使用 ioctl(fd,EVIOCGRAB,(void*)1) 抓取键盘,但终端在执行程序时不断发送 shell 换行符。与此 .

中的问题相同

有没有办法在 ioctl 之前不调用 sleep() 来解决这个问题?

我想到的解决方案是在调用 ioctl(fd,EVIOCGRAB,(void*)1) 之前从键盘设备读取一次。

如果有更好的方法请告诉我。