libevent笔记

只是简单的介绍点接口,具体深入,看项目需求学习
  • 有名管道
     * mkfifo("fifo_1",0664)     --创建有名管道文件
     * open("fifo_1",O_RDWR)     --打开管道文件,读写方式,返回文件描述符
    管道-libevent        
     * event_init()        --创建事件底座,返回一个底座描述符,一般用event_base_new()会更灵活 
     * struct event        --事件类型结构体
     * event_set()         --绑定文描和事件监听属性,并建立事件发生时调用的方法(回调函数),这个接口作用同event_assign()一致。只不过本接口使用默认事件底座,不用自己传入event_base,前提是底座是由event_init()接口创建
        --事件,被关联的文件描述副/信号,事件属性/信号值,回调函数,回调函数参数
          --事件属性 EV_READ //事件读属性  |  EV_PERSIST  //事件循环属性 
     * event_add()         --将事件添加到底座中,第二个参数写NULL就好
     * event_dispatch()    --监听底座中的事件,若没有则直接返回。比event_base_dispatch()少一个参数,但作用相同 
    
  • 信号
     * 一般我们需要通过信号处理一些事情时,往往用的是singal() //接口来接收后设定属性方法,  kill()  //接口来发送,    kill -信号  -进城号   //命令来发送
     * ps ajx     --可查看进程号
     * kill -l    --查看系统提供的信号
    信号-libevent
     * event_base_new()     --创建事件底座,返回一个事件底座变量,用完需要通过event_base_free()手动释放
     * struct event
     * event_assign    --绑定文描和事件监听属性参考 sevet_set()
     * event_add()
     * event_base_dispatch()   --监听底座中的事件,若没有则直接返回
     * event_base_free()       --释放事件底座
    
  • TCPserver
     * event_base_new()  
     * evconnlistener_new_bind()    --创建监听对象,在回调函数的传出参数中得到通信文描。    由于TCP的前五步都封装到了这一个函数中,所以参数会比较多
         --属性设置 LEV_OPT_CLOSE_ON_FREE  |  LEV_OPT_REUSEAVLE
     * event_base_dispatch()
     * evconnlistener_free(监听对象/事件)    --释放创建的监听对象
     * event_base_free()
    
     在监听对象的回调函数中
     * bufferevent_socket_new()      --创建缓冲区对象,并将其绑定的通信文描插入底座中。
         -- 属性设置 BEV_OPT_CLOSE_ON_FREE
     * bufferevent_setcb()           --设置缓冲回调函数(缓冲区对象,读,写,其他,参数)  一般设置读来读,写的话不用非在回调函数中,其他回调一般用于客户端退出时汇报和清理垃圾。  参数若虚传入,可以组一个结构体,并分配堆区空间后,接收复制我们fd,sockaddr的内容(由于这两个传出参数在栈区,无法直接传)
     * bufferevent_enable()          --使能缓冲区对象/事件
         -- 属性设置 EV_READ | EV_PERSIST
     * 在事件回调函数中,属性值为 BEV_EVENT_EOF 时,为客户端退出事件
     * 客户端退出记得释放 通信对象/事件
     * bufferevent_free()            --释放通信对象/事件