日期:2014-05-16  浏览次数:20698 次

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只是检查在指定的流上是否允许读/写/错误发生,检查到了有数据可以读,如故你没把这数据读走,那下次检查时,还是认为有数据可以读.