*/
# include <stdio.h>
# include <sys/time.h>
# include <sys/types.h>
# include <unistd.h>
# include <string.h>
#define STDIN 0 //标准输入设备的文件描述符为0
int main()
{
struct timeval tv; //定义等待时间
fd_set readfds; //定义读文件描述符集合
while(1){
tv.tv_sec=5; //等待时间为5.005s
tv.tv_usec=5000;
FD_ZERO(&readfds);//清空读集合
FD_SET(STDIN,&readfds);//将从键盘输入这个文件描述符符加入集合
char buf[128];
select(STDIN+1,&readfds,NULL,NULL,&tv);
if(FD_ISSET(STDIN,&readfds)) //判断被选通的是STDIN
{
fgets(buf,sizeof(buf),stdin);
int len = strlen(buf);
buf[len-1] = '\0';//一行的结束是'\n',数组的结束是'\0'
printf("\033[32m%s\033[0m is pressed !\n",buf);
float tmp1 = 5 - tv.tv_sec;
float tmp2 = 1000000 - tv.tv_usec;
float tmp = 0;
tmp += tmp1;
tmp += tmp2/1000000;
printf ("time = %.3f\n",tmp); //.3即小数点后保留三位
fflush(stdin);//清空输入缓存区
}
else
printf("\n\033[31mtime out\033[0m\n");
}
}