牛骨文教育服务平台(让学习变的简单)
博文笔记

Libevent0.1之测试Libevent自带的例子

创建时间:2015-06-02 投稿人: 浏览次数:1757

因为0.1版本的只支持linux版本,所以本文章中的测试环境是在ubuntu下进行。

准备工作

下载0.1版本的libevent。

开始

先解压下载下来的源码
Download$ tar xzvf libevent-0.1.tar.gz


编译库文件
Download$ cd libevent
Download/libevent$ ./configure
Download/libevent$ make


编译自带的sample,-I参数指定头文件目录,-L指定库文件目录,因为它们都在本目录下,所以指定为".",-levent指定libevent.a库。
Download/libevent$ gcc -I . -o event-test sample/event-test.c -L . -levent
成功后会在当前目录下生成一个event-test文件


event-test.c例子中使用了一个命名管道(也被称为FIFO文件)的东西,命名管道用于不同进程之间进行通信(IPC),命名管道具体内容可以参考这里。它通过读的方式打开一个命名管道,并且监听这个命名管道是否有数据可读,当有数据可读时会执行fifo_read函数,把读取的内容打印出来。


下面就是我写的一个往这个命名管道写内容的简单的程序:
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/queue.h>
#include <sys/time.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>


int main(int argc, char **argv)
{
    char *input = argv[1];
    if (argc != 2)
    {
        input = "hello";
    }
    int fd ;
    fd = open("event.fifo",O_WRONLY);
    if(fd == -1){
        perror("open error");
        exit(EXIT_FAILURE);
    }


    write(fd, input, strlen(input));
    close(fd);
    printf("write success
");
    return 0;
}


把上面代码保存为writeFIFO.c,然后编译
Download/libevent$ gcc -o writeFIFO writeFIFO.c


成功后会生成一个writeFIFO文件
然后就是测试了,先运行event-test,程序会一直等待命名管道是否有数据可读
Download/libevent$ ./event-test

另开一个终端执行:
Download/libevent$ ./writeFIFO 123456

event-test将会收到”123456“并且打印在终端
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。