文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>libevent 入门

libevent 入门

时间:2010-04-19  来源:深蓝苹果

    第一次接触libevent,做个记录备用。         libevent        一个支持Windows、linux和bsd等平台的网络事件驱动程序库。它支持多种I/O服用机制,按照优先级从高到低依次为:evport、kqueue、epoll、devpoll、rtsig、poll、select。它可根据操作系统,按照优先级从高到底自主选择驱动。           使用         

/*

 * libevent自带的例子,因为不考虑在windows平台下使用,删去了一点跨平台的内容
 * Compile with:
 * cc -I/usr/local/include -o signal-test signal-test.c -L/usr/local/lib -levent
 */

#include <sys/types.h>

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include <sys/stat.h>
#include <sys/queue.h>
#include <unistd.h>
#include <sys/time.h>
#include <signal.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>

#include <event.h>

int called = 0;

static void
signal_cb(int fd, short event, void *arg)
{
    struct event *signal = arg;

    printf("%s: got signal %d\n", __func__, EVENT_SIGNAL(signal));

    if (called >= 2)
        event_del(signal);//事件删除    
    called++;
}

int
main (int argc, char **argv)
{
    struct event signal_int;
 
    /* Initalize the event library */
    event_init();//初始化

    //可有 event_base main_base = event_init();

    //另外,有专用于http、dns、rpc等的初始化函数

    /* Initalize one event */
    event_set(&signal_int, SIGINT, EV_SIGNAL|EV_PERSIST, signal_cb,
     &signal_int);//设置事件

    //事件类型包括EV_READ、EV_WRITE、EV_PERSIST等

    //另外有一个设置时间的函数evtimer_set(...);

    event_add(&signal_int, NULL);//加入事件队列

    //第二个参数为超时值,可以为空

    event_dispatch();//启动事件循环

    //另一种常用方式为event_base_loop(event_base类型变量/*event_base的返回值*/,0)

    return (0);
}


相关阅读 更多 +
排行榜 更多 +
哥布林弹球b服手游下载

哥布林弹球b服手游下载

休闲益智 下载
小马样式盒游戏下载

小马样式盒游戏下载

休闲益智 下载
异变小镇中文版下载安装

异变小镇中文版下载安装

冒险解谜 下载