在C中获取键盘中断
作者:互联网
程序:
#include<stdio.h>
void main()
{
int time=1800;
while(1){
system("clear");
time-=1;
printf("%d\n",time);
sleep(1);
if(time==0)
pause();
}
}
当时间达到0时,上述程序停止.我的要求是在程序运行期间,如果我按任意键,如空格键或任何其他键,程序暂停,再次按下键,程序恢复.所以这样做,在执行之前
在条件下,我们提交键盘中断的信号处理程序.在C中如何做到这一点.
什么是用于获得键盘中断的函数.我不想从用户那里得到输入,我想处理用户通过键盘产生的中断.
提前致谢..,
解决方法:
键盘不存在于纯标准C99或C11中(stdin不是键盘,可能是pipe(7),因此并不总是tty(4);您可能从/ dev / tty读取…).
因此,您希望它变得简单得多,而且它是特定于操作系统的.我专注于Linux.
阅读有关ttys的更多信息,特别是阅读tty demystified.请注意,tty通常处于熟模式,其中内核是缓冲行(除了stdin是行缓冲).
合理的方法是使用像ncurses或readline这样的终端库.这些库在原始模式下设置tty(您可以自己完成,参见this和termios(3);您可能还需要poll(2)).确保正常退出并在退出前将tty重置为熟食模式.
但是你的生命可能太短,不能潜入termios(3)和tty_ioctl(4),所以只需使用ncurses或readline
您还可以考虑一些GUI应用程序(例如,在X11或Wayland之上).然后使用工具包(GTK,Qt,…).
标签:c-3,linux,keyboard,unix,signal-handling 来源: https://codeday.me/bug/20191003/1847266.html