unlink("myfifo");//創建有名管道mkfifo("myfifo",0664);//open file
int fd =open("myfifo",O_RDONLY|O_NONBLOCK);//create write event base
struct event_base *base=NULL;
base =event_base_new();
創建一個事件
//create event
struct event* ev =NULL;
ev =event_new(base, fd,EV_READ|EV_PERSIST, read_cb,NULL);
//callback function for readvoidread_cb(evutil_socket_t fd, short what,void*arg){
char buf[1024]={0};//read fifo
int len =read(fd,buf,sizeof(buf));printf("data len = %d, %s\n", len ,buf);printf("read event: %s",what&EV_READ?"Yes":"No");}
write_fifo
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <fcntl.h>
#include <event2/event.h>//callback function for readvoidwrite_cb(evutil_socket_t fd, short what,void*arg){
char buf[1024]={0};//write fifostatic int num =0;sprintf(buf,"hello world == %d\n", num++);
int len =write(fd,buf,strlen(buf)+1);}//write fifo
int main(int argc,const char *argv[]){//unlink("myfifo");//創建有名管道//mkfifi("myfifo",0664);//open file
int fd =open("myfifo",O_WRONLY|O_NONBLOCK);if(fd==-1){exit(1);}//create write event base
struct event_base *base=NULL;
base =event_base_new();//create event
struct event* ev =NULL;//檢測的是寫緩衝區是否有空間寫
ev =event_new(base, fd,EV_WRITE, write_cb,NULL);//EV_PERSIST去掉後只寫一次//event addevent_add(ev,NULL);//event circleevent_base_dispatch(base);//event freeevent_free(ev);event_base_free(base);close(fd);return0;}