#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/epoll.h>

#ifndef MAX_LEN
#define MAX_LEN 256
#endif
#define EPOLL_SIZE  1000
int     main(int atgc ,char **argv)
{
    int     fd = 0;
    int     len = 0;
    int     nfds = 0;
    int     index = 0;
    char    buf[MAX_LEN] = {0};
    struct  epoll_event ev;
    struct  epoll_event event[EPOLL_SIZE];

    //create a epoll object
    if(-1==(fd=epoll_create(EPOLL_SIZE))){
        perror("create epoll object error:");
        return  -1;
    }
    
    //add a file descriptor which need to be listened
    ev.events = EPOLLIN | EPOLLET;
    ev.data.fd= STDIN_FILENO;
    epoll_ctl(fd,EPOLL_CTL_ADD,STDIN_FILENO,&ev);
    
    //begin to listen the file descriptor
    while(1){
        nfds = epoll_wait(fd,event,1000,-1);
        if(nfds == -1){
            perror("epoll_wait:");
            return  -1;
        }
        for(index = 0 ; index < nfds ; index++){
            if(event[index].events == EPOLLIN){
                len = read(event[index].data.fd,buf,sizeof(buf));
                buf[len] = '\0';
                printf("buf = %s\n",buf);
            }        
        }
    }

    return  EXIT_SUCCESS;
}  

posted on 2013-09-07 20:51  wowk  阅读(1303)  评论(0编辑  收藏  举报