至從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;
}
有興趣可以試一試。