select的問題和keyboard訊息
FD_ZERO(&allset);
FD_SET(fileno(stdin), &allset);
while(1)
{
rset=allset;
tv.tv_sec = 3;
tv.tv_usec = 0;
ret = select(1, &rset, NULL, NULL, &tv);
if(FD_ISSET(0, &rset))
{
printf("test\n");
}
}
為什麼當按下keyboard任意鍵時會print test,但卻變成一直print test
不會停止,該怎麼清空keyboard訊息呢
thx
------解决方案--------------------C/C++ code
if(FD_ISSET(0, &rset))
{
[color=#FF0000]getchar();[/color]
printf("test\n");
}
------解决方案--------------------
select只是检查在指定的流上是否允许读/写/错误发生,检查到了有数据可以读,如故你没把这数据读走,那下次检查时,还是认为有数据可以读.