系统在Linux系统上使用kbhit函数(kbhitlinux)
kbhit函数可在Linux操作系统中被使用,它实际是一个终端模拟函数,可让在Linux控制台终端下运行的应用程序可以检测并获取按键,从而实现交互功能,它的一般使用形式如下:
“`c
//kbhit函数:检测按键
extern int kbhit(void);
//该函数会返回一个整型值,其中1表示检测到按键,而0表示没有检测到按键
系统调用kbhit()函数时可以获取控制台下按键,得到返回值1或0,我们可以通过该返回值来根据所检测到的按键实现特定功能。
在Linux操作系统中,我们可以借助kbhit()函数实现非阻塞输入,这对很多应用程序来说非常有用,它们可以运行得更加灵活。以下是一个简单的示例,该应用程序主要是显示当前时间,并当按下ESC键时退出:
```c#include
#include
#include
#include
/*kbhit函数:检测按键*/int kbhit(void)
{ struct termios oldt, newt;
int ch; int oldf;
tcgetattr(STDIN_FILENO, &oldt); newt = oldt;
newt.c_lflag &= ~(ICANON | ECHO); tcsetattr(STDIN_FILENO, TCSANOW, &newt);
oldf = fcntl(STDIN_FILENO, F_GETFL, 0); fcntl(STDIN_FILENO, F_SETFL, oldf | O_NONBLOCK);
ch = getchar();
tcsetattr(STDIN_FILENO, TCSANOW, &oldt); fcntl(STDIN_FILENO, F_SETFL, oldf);
if (ch != EOF) {
ungetc(ch, stdin); return 1;
}
return 0;}
int main(void){
time_t now; struct tm *tm_now;
char buf[BUFSIZ];
while (1) {
if (kbhit()) /* 有按键按下? */ {
char ch = getchar(); if (ch == 27) /* ESC */
{ /* 退出程序 */
break; }
} /* 获取当前时间 */
now = time(NULL); tm_now = localtime(&now);
strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", tm_now); puts(buf);
usleep(500*1000); /* 0.5秒延时 */ }
return 0;}
kbhit函数在Linux操作系统下效果非常出色,这让开发者可以很容易地使用该函数实现特定功能,比如基于控制台的实时应用程序,用来检测用户的输入,可以迅速地在Linux操作系统上实现人机交互,提高工作效率。