linux多路io-----select简单用法

Posted 吾乃世间奇才

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux多路io-----select简单用法相关的知识,希望对你有一定的参考价值。

#include <sys/types.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <dirent.h>


int main(int argc, char * argv[])
{

        int ret = 0;
        int mousefd;
        char arr[100];
        fd_set readfds;

        mousefd = open("/dev/input/mouse0", O_RDONLY);
        if(mousefd == -1)
                perror(argv[0]);

        while(1){
        FD_ZERO(&readfds);
        FD_SET(0, &readfds);
        FD_SET(mousefd, &readfds);
                ret = select(mousefd+1, &readfds, NULL, NULL, NULL);
                if(ret > 0){
                        if(FD_ISSET(0, &readfds)){
                                ret  = read(0, arr, sizeof(arr));
                                if(ret > 0){
                                        printf("%s\\n", arr);
                                }
                        }
                        if(FD_ISSET(mousefd, &readfds)){
                                ret = read(mousefd, arr, sizeof(arr));
                                if(ret > 0)
                                        printf("%d\\n", arr);
                        }
                }
        }
        return 0;
}

以上是关于linux多路io-----select简单用法的主要内容,如果未能解决你的问题,请参考以下文章

UNP——第六章,多路转接IO——select

Linux IO多路复用模型

Linux 下网络 IO 的多路复用

一.lock的使用

I/O多路复用之Select

Linux epoll 实现原理