打印
[boot]

Linux-IO多路复用select函数实践

[复制链接]
466|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
蒋博1026|  楼主 | 2019-8-18 09:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/select.h>
int main(void)
{
    int ret = -1;
    int fd = -1;
    char buf[100];
    fd_set myset;
    struct timeval tm;
    fd = open("/dev/input/mouse0",O_RDONLY);
    if(fd < 0)
    {
        perror("open:");
        return -1;
    }
    FD_ZERO(&myset);
    FD_SET(fd, &myset);
    FD_SET(0, &myset);
    tm.tv_sec = 10;
    tm.tv_usec = 0;
    ret = select(fd + 1, &myset, NULL, NULL, &tm);
    if(ret < 0)
    {
        perror("select:");
        return -1;
    }
    else if(ret == 0)
    {
        printf("超时了\n");
    }
    else
    {
        if(FD_ISSET(fd, &myset))
        {
            //处理鼠标
            memset(buf, 0, sizeof(buf));
            read(fd, buf, 2);
            printf("读出的鼠标:[%s]\n",buf);
        }
        if(FD_ISSET(0, &myset))
        {
            //处理键盘
            memset(buf, 0, sizeof(buf));
            read(0, buf, 2);
            printf("读出的键盘:[%s]\n",buf);
        }
    }
    return 0;
}

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

323

主题

1820

帖子

18

粉丝