这是我找到的kbhit实现,但由于某种原因,它只是等待一个键被按下,而不是返回某个非0的结果。它并不能真正起到kbhit的作用...
int kbhit(void)
{
struct timeval tv;
fd_set read_fd;
tv.tv_sec=0;
tv.tv_usec=0;
FD_ZERO(&read_fd);
FD_SET(0,&read_fd);
if(select(1, &read_fd, NULL, NULL, &tv) == -1)
return 0;
if(FD_ISSET(0,&read_fd))
return 1;
return 0;
}有人能给我解释一下问题出在哪里吗?顺便说一句,我用的是Linux。
我想你可能误解了我的意思,并认为它实际上是在击键后返回非零值。我的问题是kbhit总是等待击键。
发布于 2010-10-20 01:41:33
stdin可能是行缓冲的。在尝试检测按键时,您需要将其切换到无缓冲状态。
https://stackoverflow.com/questions/3971024
复制相似问题