天天看點

epoll之不能

至從epoll誕生來,都被吹成神了,但我想說的是,他還有一種不能(我現在發現的)。。。。。。。

epoll 不能檢測檔案流轉檔案描述符的描述符,但select就可以。。。。。。。

上代碼:

#include <stdio.h>

#include <sys/epoll.h>

#include <string.h>

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

    if(argv < 1)

        return -1;

    int epoll_fd =0 ;

    epoll_fd = epoll_create(120);

    struct epoll_event events[120];

    memset(events,0x0,sizeof(events));

    FILE    *fp = NULL;

    if(argc[1] != NULL){

        fp = fopen(argc[1],"rb");

    }

    int  fd = 0;

    fd = fileno(fp);

    printf("file to fd :%d \n",fd);

    struct  epoll_event ev;

    ev.data.fd = fd;

    ev.events = EPOLLIN|EPOLLOUT|EPOLLPRI;

    epoll_ctl(epoll_fd,EPOLL_CTL_ADD,fd,&ev);

    int nfds = 0;

    while(1){

        nfds = epoll_wait(epoll_fd,events,120,500);

        if(nfds > 0){

            struct epoll_event evs;

            int                 i = 0;  

            for(i = 0 ; i < nfds ;i++){

                printf("tirgger fd:%d \n",events[i].data.fd);

            }

        }

    }

    return 0;

}

有興趣可以試一試。

繼續閱讀