Libevent0.1之测试Libevent自带的例子
2015-06-02 14:45
309 查看
因为0.1版本的只支持linux版本,所以本文章中的测试环境是在ubuntu下进行。
编译库文件
编译自带的sample,-I参数指定头文件目录,-L指定库文件目录,因为它们都在本目录下,所以指定为".",-levent指定libevent.a库。
event-test.c例子中使用了一个命名管道(也被称为FIFO文件)的东西,命名管道用于不同进程之间进行通信(IPC),命名管道具体内容可以参考这里。它通过读的方式打开一个命名管道,并且监听这个命名管道是否有数据可读,当有数据可读时会执行fifo_read函数,把读取的内容打印出来。
下面就是我写的一个往这个命名管道写内容的简单的程序:
把上面代码保存为writeFIFO.c,然后编译
成功后会生成一个writeFIFO文件
然后就是测试了,先运行event-test,程序会一直等待命名管道是否有数据可读
另开一个终端执行:
event-test将会收到”123456“并且打印在终端
准备工作
下载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\n"); 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“并且打印在终端
相关文章推荐
- Android所有的自带系统图片
- Google NFC Basics (谷歌官网NFC翻译)
- 工作周报045
- wxWidgets 小记
- ffmpeg用代码实现自己的muxer
- 关于大型网站技术演进的思考(八)--存储的瓶颈终篇(8)
- Split Animation Clip From FBX and Multiply Mode Sprite
- 上传文件
- Linux Shell脚本系列教程(一):Shell入门
- 网络拓扑简析
- ExtJS结合WCF/Jquery结合WCF 分别开发的非常优秀的网页聊天工具,持续更新
- 隐藏浏览器中php,apache,varnish,nginx版本信息
- Unity区分平台编译
- 为什么在重写equals方法时都要重写equals方法呢:
- 常用的C++库总结
- 从fragment跳转到activity , 返回到指定fragment页面
- 关于Class.forName(className).newInstance()介绍
- SPRING 整合IBATIS或者hibernate等持久数据层流程与实现
- QTcreator的一些设置
- HDU 2377 Bus Pass 最短路