/*
同时读取输入设备键盘鼠标的状态,验证非阻塞式。read默认是阻塞式,如果在read之前没有输入,就不会继续执行程序,知道有输入时,才继续执行后面的程序。这里的NONBLOCK就是设置设备文件的非阻塞式
*/
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
int main(void)
{
int ret = -1,flag;
int fd=-1;
char buf[500];
//设置键盘输入为非阻塞式
flag = fcntl(0,F_GETFL,0);
flag |=O_NONBLOCK;
fcntl(0,F_SETFL,flag);
//鼠标非阻塞式
fd=open("/dev/input/mouse0",O_RDONLY|O_NONBLOCK);
while(1)
{
//读键盘
memset(buf,0,sizeof(buf));
ret = read(0,buf,10);
if(ret>0)
{
printf("keyboard buf:%s\n",buf);
printf("keyboard after read \n");
}
//读鼠标
memset(buf,0,sizeof(buf));
ret = read(fd,buf,20);
if(ret>0)
{
printf("mouse buf:%s\n",buf);
printf("mouse after read \n");
}
}
return 0;
}