#include "common.h" int main(void) { char buf[1024]; int fd = open("/dev/input/mice", O_RDONLY); ERROR(fd < 0, "open mouse", err1); while(1) { //创建一个文件描述符监听集 fd_set rset; //清空该监听集 FD_ZERO(&rset); //将你想要监听的文件描述符加入监听集 FD_SET(0, &rset); FD_SET(fd, &rset); struct timeval tval; tval.tv_sec = 3; tval.tv_usec = 0; //返回值是当前就绪的文件描述符数量 int res = select(fd+1, &rset, NULL, NULL, &tval); printf("fd=%d\tres = %d\n", fd, res); if(res == 0) { printf("等待超时!重来!\n"); continue; } //查询监听集里面某个文件描述符是否就绪 if(FD_ISSET(0, &rset)) { printf("read 0\n"); bzero(buf, 1024); read(0, buf, 1024); printf("stdin:%s\n", buf); } if(FD_ISSET(fd, &rset)) { printf("read fd\n"); bzero(buf, 1024); read(fd, buf, 1024); printf("mouse:%s\n", buf); } } #if 0 sigemptyset(&sigset); sigaddset(SIGINT, &sigset); sigismember sigprocmask #endif printf("over\n"); return 0; err1: return -1; } |
|